我對評估joins.The查詢SQL Server如何sql服務器如何評估多個不同的聯接?
SELECT *
FROM TableA
INNER JOIN TableB ON TableB.id = TableA.id
LEFT JOIN TABLEC ON TABLEC.id = TABLEB.id
Q1一般性的問題:是LEFT JOIN基於什麼表?我知道它將基於TABLEC,但另一個是什麼?它是在左連接條件中指定的第一個內部連接還是TABLEB的結果?
Q2:是 「LEFT JOIN表C ON TABLEC.id = TABLEB.id」 等同於 「LEFT JOIN表C ON TABLEB.id = TABLEC.id」
Q3:是等效於以下一個查詢? (TABLEB.id替換TABLEA.id?)
SELECT *
FROM TableA
INNER JOIN TableB ON TableB.id = TableA.id
LEFT JOIN TABLEC ON TABLEC.id = TABLEA.id
謝謝!
但你的解釋似乎是說交換而不是聯想。 – zsong 2010-03-31 16:35:20
@ziang:你說得對。我應該解釋一個JOIN(B JOIN C)與(A JOIN B)JOIN C相同,其中括號表示評估順序,而不是子查詢。 – 2010-03-31 17:41:40