我有一些我正在经历的遗留代码,我刚刚找到一个带有两个“on”子句的联接......
select * from table
inner join table3
inner join table2 on table3.key = table2.fkey on table.key = table2.otherkey
这种加入意味着什么? (它目前有效,因此它不是语法错误)
(编辑:修复了代码,缺少连接)
答案 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
希望更有意义。我在这里所做的就是添加括号。
从概念上讲,第一次加入table3
到table2
会生成一个包含两者所有列的中间表。然后使用您看到的第二个table1
子句将on
连接到此。