是否可以将一个左外连接放在其他左外连接中

Sun*_*tel 6 sql db2 join left-join

我可以将左外连接放在另一个左外连接中吗?像这样:

SELECT * FROM table1 
LEFT OUTER JOIN table2 ON (LEFT OUTER JOIN table 3 ON (Join Conditions))
WHERE
....(where conditions)
Run Code Online (Sandbox Code Playgroud)

Chr*_*ler 11

要对多个连接进行分组,语法如下(在db2上未经测试)

SELECT *
FROM table1 t1
LEFT JOIN (
  table2 t2 INNER JOIN table3 t3 ON t3.someId = t2.someId
) ON t2.someId = t1.someId
Run Code Online (Sandbox Code Playgroud)

左连接内部的语法相同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
Run Code Online (Sandbox Code Playgroud)

  • 是的,这也是它在DB2上运行的方式.OP要求嵌套的`LEFT`连接,但语法是相同的.然而,通常最好做内部连接,并且让最外面的左边处理那些职责(如果没有其他原因,除了多个`LEFT'可以变得曲折). (2认同)