是否可以在一个左外连接中嵌套另一个左外连接?

8
我能在另一个左外连接中放置一个左外连接吗?像这样:
SELECT * FROM table1 
LEFT OUTER JOIN table2 ON (LEFT OUTER JOIN table 3 ON (Join Conditions))
WHERE
....(where conditions)
1个回答

14

组合多个连接的语法如下(在db2上未经测试)

SELECT *
FROM table1 t1
LEFT JOIN (
  table2 t2 INNER JOIN table3 t3 ON t3.someId = t2.someId
) ON t2.someId = t1.someId

使用LEFT JOIN()内部的左连接相同语法,但请阅读@X-Zero的注释

SELECT *
FROM table1 t1
LEFT JOIN (
  table2 t2 LEFT JOIN table3 t3 ON t3.someId = t2.someId
) ON t2.someId = t1.someId

2
是的,在DB2上也是这样工作的。OP要求嵌套的LEFT连接,但语法是相同的。然而,通常最好使用内部连接,并让最外层的左连接处理这些任务(如果没有其他原因,多个LEFT可能会变得扭曲)。 - Clockwork-Muse
感谢 @ChrisGessler 。你的解决方案非常有用。现在我能够在我的查询中使用嵌套JOIN了。 - Sunil luitel

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接