左连接问题。我试图LEFT JOIN一个表,需要在初始左连接表上连接其他表。所以..
SELECT * FROM tableA
LEFT JOIN tableB
ON tableB.id=tableA.id
JOIN tableC
ON tableC.id=tableB.id
问题是如果我没有离开联接表C我没有得到任何结果,如果离开加入我得到太多结果。
我应该使用哪种连接,如果tableB join为null,tableC连接也将为null?
答案 0 :(得分:1)
我没有离开加入表C我没有得到任何结果,如果离开加入我得到 结果太多了
您需要确定您的驾驶表和数据是什么。在这种情况下,似乎表A是驱动表,从B到C的连接也可以是左连接,这意味着即使B中不存在匹配,也可以返回来自C的数据。
SELECT * FROM tableA
LEFT JOIN tableB
ON tableB.id=tableA.id
LEFT JOIN tableC
ON tableC.id=tableB.id
如果离开加入,我会得到太多结果
你能发布一些样本数据来表明你的意思吗?
答案 1 :(得分:1)
子查询怎么样?
SELECT * FROM tableA
LEFT JOIN (SELECT tableB.id FROM tableB
JOIN tableC
ON tableC.id=tableB.id) tableZ
ON tableZ.id=tableA.id
答案 2 :(得分:0)
我想你可能想要这个逻辑:
SELECT *
FROM tableA LEFT JOIN
(tableB JOIN
tableC
ON tableC.id = tableB.id
)
ON tableB.id = tableA.id ;
通常,LEFT JOIN
想要链接它们,但也有一些例外。