以下兩個查詢不會返回相同的結果。爲什麼?Mysql拼圖:條件在ON與WHERE
注意:我發現這個問題作爲一個MySQL的難題,我沒有在這個問題上更多的數據?
SELECT table1.*
FROM table1 LEFT JOIN table2
ON table2.table1_id = table1.id
AND table2.val < 5
SELECT table1.*
FROM table1 LEFT JOIN table2
ON table2.table1_id = table1.id
WHERE table2.val < 5
@MarkByers不會有在投影任何空行(要顯示哪些列),但是查詢的數據集將和所有區別 –
@MarkByers在查詢1號中,將會有來自table2的NULL值。 –
@Adrian,在查詢2中,通過使用'where',他已經將查詢轉換爲內部連接,如下面Robin的答案。這就是結果集不同的原因。 – Ben