跳至主要內容
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • 如何用一条 SQL 语句同时查询这三张数据表?数据表如下
未分類
18 4 月 2021

如何用一条 SQL 语句同时查询这三张数据表?数据表如下

如何用一条 SQL 语句同时查询这三张数据表?数据表如下

資深大佬 : frozenway 13

####表 a aid|name|cid|did|sex|xdate –|:–:|:–:|:–:|:–:|–: 1|john|1,3|1,2,3|未知|2021-01-02

####表 c cid|cname –|–: 1|小花 2|阿狸 3|大菊

####表 d did|dname –|–: 1|大黄 2|小黑 3|小灰

需要一次性查出表 a aid=1 的详细数据,表 a 的 cid 对应表 c 的 cid,表 a 的 did 对应表 d 的 did

如何用一条 SQL 语句同时查询这三张数据表?数据表如下

大佬有話說 (20)

  • 主 資深大佬 : frozenway

    “`
    SELECT a.*, c.*, d.* FROM a LEFT JOIN c ON c.cid IN a.cid LEFT JOIN d ON d.did IN a.did WHERE a.aid=1
    “`
    这是我想到的语句,但是报错了

  • 資深大佬 : hulalalla

    FIND_IN_SET

  • 資深大佬 : eason1874

    LEFT JOIN c
    ON FIND_IN_SET(c.cid, a.cid)

  • 資深大佬 : c6h6benzene

    这表设计就…一言难尽。

    IN 的运算对象是集合,你需要想办法把 a 表中的 cid 和 did 拆开,例如 SQL Server 的 STRING_SPLIT 。

  • 資深大佬 : shenjinpeng

    建议分开查 … , 联表查出来格式也不对

  • 資深大佬 : lance6716

    第一次见第一范式都不符合的……

  • 資深大佬 : x86

    这 MySQL 表跟受委屈了…

  • 資深大佬 : yeqizhang

    分开查没毛病, 如果是管理系统的列表展示, 循环多查几次而已。

    这不会是面试题吧?

  • 資深大佬 : customsshen

    select a.*,c.* from a left join c on a.cid= c.cid where a.aid=1 union ( select a.* , d.* from a left join d on a.cid= d.cid where a.aid=1 )

  • 資深大佬 : yeqizhang

    @customsshen 兄弟,你看错了,a.cid 是逗号分隔的多个 id

  • 資深大佬 : customsshen

    @yeqizhang 哈哈,好家伙,直接放弃吧。

  • 資深大佬 : dqzcwxb

    放一条 sql 查恰恰是效率最低的方案之一

  • 資深大佬 : shyrock

    拒绝回答这种问题,建议赶紧把表 1 拆开。把设计这种表的人拉去挂电线杆。

  • 資深大佬 : pendulum

    表 a 的设计真是。。

  • 資深大佬 : TomVista

    祭天吧

  • 資深大佬 : tcfenix

    如果你想 cid 跟 did 用来做外键的话你就应该搞个 relation 表, 建立 aid cid 与 did 的多对多对多的关系

    到时候用起来就很简单

    而不是用逗号分隔…..你这设计的都能进教科书了…..

  • 資深大佬 : KouShuiYu

    postgresql 是支持的,可以吧 cid,did 转成数组关联查询,

  • 資深大佬 : vynkicc

    解决开表 1 的人

  • 資深大佬 : AlkTTT

    这 A 表降 san 值,快跑!

  • 資深大佬 : SjwNo1

    为啥要一条 sql

文章導覽

上一篇文章
下一篇文章

AD

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文

51la

4563博客

全新的繁體中文 WordPress 網站
返回頂端
本站採用 WordPress 建置 | 佈景主題採用 GretaThemes 所設計的 Memory
4563博客
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?
在這裡新增小工具