【发布时间】:2010-11-08 20:06:31
【问题描述】:
我现在大概应该知道了,但是如果有的话,下面的两个陈述之间有什么区别?
嵌套连接:
SELECT
t1.*
FROM
table1 t1
INNER JOIN table2 t2
LEFT JOIN table3 t3 ON t3.table3_ID = t2.table2_ID
ON t2.table2_ID = t1.table1_ID
更传统的连接:
SELECT
t1.*
FROM
table1 t1
INNER JOIN table2 t2 ON t2.table2_ID = t1.table1_ID
LEFT JOIN table3 t3 ON t3.table3_ID = t2.table2_ID
【问题讨论】:
-
执行它们时是否给出相同的结果?
-
第二个比第一个更容易理解——即使你在第一个中的 LOJ 周围加上(括号)。期待在这个问题上投票给一个好的答案。
-
在我有限的测试中,是的,它们确实给出了相同的结果。但是,我不想在此基础上做出任何假设,因为我只是用有限的数据进行了快速测试。
-
哎呀,用“视觉”查询设计器构建的重写视图的闪回。一个查询中的左右连接、嵌套连接以及试图找出和/或没有括号的顺序或操作的恐怖。
标签: sql sql-server database tsql join