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


匹配完再筛选,结果只有一条记录。

posted on 2018-11-13 16:53  持续在更新  阅读(6312)  评论(0编辑  收藏  举报

导航