遗留SQL代码中奇怪的连接语法

遗留SQL代码中奇怪的连接语法,sql,tsql,join,Sql,Tsql,Join,我正在浏览一些遗留代码,我刚刚找到一个包含两个“on”子句的联接 select * from table inner join table3 inner join table2 on table3.key = table2.fkey on table.key = table2.otherkey 这种连接是什么意思?(它目前可以工作,因此不是语法错误) (编辑:修复了代码,缺少一个连接)发布您的编辑它只是一个知道隐式优先级的例子 select * from table1 inner join t

我正在浏览一些遗留代码,我刚刚找到一个包含两个“on”子句的联接

select * from table
inner join table3
inner join table2 on table3.key = table2.fkey on table.key = table2.otherkey
这种连接是什么意思?(它目前可以工作,因此不是语法错误)


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

发布您的编辑它只是一个知道隐式优先级的例子

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
,生成一个中间表,其中包含两个表中的所有列<然后,使用您看到的第二个
on
子句将code>表1连接到此表。

在编辑后,这只是了解隐式优先级的一种情况

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
,生成一个中间表,其中包含两个表中的所有列<然后,使用您看到的第二个
on
子句将code>table1连接到此表中。

您确定吗?我无法将这样的语句编译成rry,错过了一个对奇怪连接至关重要的连接:)编辑了原始帖子…你确定吗?我不能得到这样一个声明来编译,错过了一个对奇怪的连接至关重要的连接:)编辑原始帖子…啊,是的。。。这是有道理的,但读代码却很糟糕:|啊,是的。。。这是有道理的,但读代码会很糟糕:|