【发布时间】:2017-08-15 14:36:37
【问题描述】:
说,我有以下查询:
SELECT * FROM TABLE1
JOIN TABLE2 ON ...
LEFT JOIN TABLE3 ON ...
JOIN TABLE3_1 ON ...
JOIN TABLE3_2 ON ...
JOIN TABLE3_3 ON ...
我想要实现的是 TABLE3、TABLE3_1、TABLE3_2、TABLE3_3 在它们内部有内部连接(我只需要它们之间的所有匹配数据,其余的都没有了)。然后对于 TABLE1,TABLE2 也有内部连接。但是从 TABLE1 + TABLE2 的结果来看,有些不会有 TABLE3 对应的条目,没关系,我还是想要它。
使用上面的伪代码,如果我按原样运行,显然不会达到同样的结果。
【问题讨论】:
-
也许你需要一个子查询:LEFT JOIN (SELECT some_col FROM table3 INNER JOIN table3_1 ON...INNER JOIN...) t3 ON t3.col_join = table1.col_join;
-
哦,我会试试的。谢谢
-
您应该报告您拥有的输入数据的示例,以及您期望的查询结果。
-
这可能是一个有趣的链接:stackoverflow.com/q/473607/2224701
-
连接链从左到右进行评估。
标签: sql oracle join left-join inner-join