2014-06-11 193 views
1

從我所瞭解到的關於左外連接的所有內容中,您希望爲空的表應位於等號的右側。如果是這樣的話,爲什麼這兩個查詢返回相同的結果:左外連接表排序

SELECT   * 
FROM   employees e 
LEFT JOIN  cars c ON c.employeeID=e.id AND c.name='Honda City' 
WHERE c.id IS NULL 
ORDER BY  e.id ASC; 

SELECT   * 
FROM   employees e 
LEFT JOIN  cars c ON e.id=c.employeeID AND c.name='Honda City' 
WHERE c.id IS NULL 
ORDER BY  e.id ASC; 

演示:http://sqlfiddle.com/#!15/46d00/2

+1

這兩個查詢是相同的。左側和右側來自哪個_table_首先。檢查此[小提琴](http://sqlfiddle.com/#!15/46d00/4) – paqogomez

回答

5

Q1使用一個LEFT JOIN B開A.id = B.id

Q2使用左側連接B打開B.id = A.id

您已更改ON子句中正在比較的項目的LHS和RHS,但是LEFT連接正在討論哪個TABLE位於左側。

所以看到一個區別,你會讓Q2使用「B左加入A.id = B.id」

+0

謝謝!我真的很想知道,自從我學習了SQL(鬆了一口氣)以後,我是否做得不正確。咄! – user3730698