2017-06-22 89 views
2

我看到了這個連接,我想知道這個語法來自哪裏。用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條款BBCC,而不是表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

它寫一個加入的一個好辦法:如果您更改您的查詢的佈局一點,你將能夠看到這樣的嵌套加入以同樣的方式,你會一個case表達ON子句,而是將所有內容放在WHERE子句中。 – scsimon

回答

0

我相信這裏發生的一切都是,查詢將您的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