用INNER JOIN堆叠ON子句
问题描述:
我看到了这个连接,我想知道这个语法来自哪里。用INNER JOIN堆叠ON子句
SELECT *
FROM [dbo].[AA]
INNER JOIN dbo.BB
INNER JOIN dbo.CC ON BB.ID = CC.BB_ID
ON AA.ID = BB.AA_ID
奇怪的是,我只能引用表第一ON
条款BB
和CC
,而不是表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
我的问题是什么是第一语法的背景下,如果有在执行任何影响,到目前为止,我没有看到它。
答
我相信这里发生的一切都是,查询将您的CC
表加入到BB
表中,而不是AA
,就好像它是子查询一样。就像一个人没有使用 -
select *
from [dbo].[AA]
inner join dbo.BB
inner join dbo.CC
on BB.ID = CC.BB_ID
on AA.ID = BB.AA_ID;
+0
因此,它限制了连接的范围,对执行的任何想法? – Ako
它写一个加入的一个好办法:如果您更改您的查询的布局一点,你将能够看到这样的嵌套加入以同样的方式,你会一个
case
表达ON子句,而是将所有内容放在WHERE子句中。 – scsimon