left join on +多條件與where區別


重點先匹配,再篩選where條件。

本文將通過幾個例子說明兩者的差別。

表1:product

id amount
1 100
2 200
3 300
4 400

 

 


表2:product_details

id  weight exist
2 22 0
4 44 1
5 55 0
6 66 1

 

1. 單個條件

select * from product a
left join product_details b
on a.id = b.id

以左表為准匹配,結果:

id  amount id weight exit
1 100 null null null
200 2 22 0
3 300 null null null
4 400 4 44 1

2. 條件寫在on 與where區別

查詢1:

SELECT * FROM product LEFT JOIN product_details
ON (product.id = product_details.id)
AND product.amount=200;

結果:

id amount id weight exist
1 100 null null null
2 200 2 22 0
3 300 null null null
4 400 null null null


把on的所有條件作為匹配條件,不符合的右表都為null。

查詢2:

SELECT * FROM product LEFT JOIN product_details
ON (product.id = product_details.id)
WHERE product.amount=200;

id amount id weight exist
2 200 2 22 0


匹配完再篩選,結果只有一條記錄。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM