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