旧版SQL代码中的奇怪连接语法

时间:2010-10-05 07:40:02

标签: sql tsql join

我有一些我正在经历的遗留代码,我刚刚找到一个带有两个“on”子句的联接......

select * from table
inner join table3
inner join table2 on table3.key = table2.fkey on table.key = table2.otherkey

这种加入意味着什么? (它目前有效,因此它不是语法错误)

(编辑:修复了代码,缺少连接)

1 个答案:

答案 0 :(得分:4)

发布您的编辑只是知道隐含优先权的情况。

select * from table1
inner join table3
inner join table2 on table3.key = table2.fkey on table1.key = table2.otherkey

相同
select * from 
table1 inner join 
   (table3 inner join table2 on table3.key = table2.fkey)
on table1.key = table2.otherkey

希望更有意义。我在这里所做的就是添加括号。

从概念上讲,第一次加入table3table2会生成一个包含两者所有列的中间表。然后使用您看到的第二个table1子句将on连接到此。