chaleaochexist
V2EX  ›  程序员

请教一个 sql 问题,在线等.

By chaleaochexist at 2018 年 11 月 24 日 · 2967 次点击
书到用时方恨少哈.

爷爷表
爸爸表
儿子表 1
儿子表 2

想关联查询所有爷爷.id = 1 的所有子孙数据.

select * from 爷爷
left join 爸爸
on 爷爷.id=爸爸.爷爷_id
left join 儿子 1
on 儿子 1.爸爸_id = 爸爸.id
left join 儿子 2
on 儿子 2.爸爸_id = 爸爸.id

这么写没毛病吧?
8 条回复  •  2018-11-24 14:44:43 +08:00
kely
   1
kely  
   2018 年 11 月 24 日
直接从爸爸表开始查,爸爸表上本身有 爷爷_id。
petelin
   2
petelin  
   2018 年 11 月 24 日 via iPhone
from 爷爷查出来的是爷爷吧
kran
   3
kran  
   2018 年 11 月 24 日 via Android
写两条 SQL 就完事了啊,干嘛非得塞一条里
mwiker
   4
mwiker  
   2018 年 11 月 24 日
select t.* from 儿子 1 t inner join 爸爸 t2 on t.爸爸_id = t2.id and t2.爷爷_id = 1
union all
select t.* from 儿子 2 t inner join 爸爸 t2 on t.爸爸_id = t2.id and t2.爷爷_id = 1
xipushi
   5
xipushi  
   2018 年 11 月 24 日 via iPhone
Sql 没毛病啊。儿子表为什么有两个?爸爸表爷爷表只有一个?
JackieMe
   6
JackieMe  
   2018 年 11 月 24 日 via Android
中文编程指日可待啊
lsido
   7
lsido  
   2018 年 11 月 24 日 via Android
秀儿
cc959798
   8
cc959798  
   2018 年 11 月 24 日
union all 解决,并且不需要连接爷爷表
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
© 2026 V2EX · 33ms · 3.9.8.5