我看到了这个连接,我想知道这个语法来自何处。
SELECT *
FROM [dbo].[AA]
INNER JOIN dbo.BB
INNER JOIN dbo.CC ON BB.ID = CC.BB_ID
ON AA.ID = BB.AA_ID
奇怪的是,我只能在第一个BB
子句中引用表CC
和ON
而不是表AA
。
通常我会写下第一个表名,然后是连接条件。
SELECT *
FROM [dbo].[AA]
INNER JOIN dbo.BB ON AA.ID = BB.AA_ID
INNER JOIN dbo.CC ON BB.ID = CC.BB_ID
我的问题是第一种语法的背景是什么,如果对执行有任何影响,到目前为止我没有看到它。
答案 0 :(得分:0)
我相信这里发生的一切都是查询将CC
表加入到您的BB
表而不是AA
,就像它是一个子查询一样。如果您稍微更改查询的布局,您将能够以与case
表达式相同的方式看到此嵌套连接:
select *
from [dbo].[AA]
inner join dbo.BB
inner join dbo.CC
on BB.ID = CC.BB_ID
on AA.ID = BB.AA_ID;