最近公司项目里有很多sql语句需要用到left join语句,一直搞不清楚left join on和where的区别,今天趁机弄清楚,防止以后出错误!
假如现在有两个表,一个是region地区表, 另一个是region_express地区对应的快递公司表,关联id为region_id 。region_name属于表region,express_name属于表region_express
现在用left join on 查询一条结果
SELECT
a.region_id,region_name, express_name
FROM
xm_region a
LEFT JOIN xm_region_express b
ON a.`region_id` = b.`region_id`
因为国、和省市都没有对应的快递表,所以后边express_name对应的是NULL。
下面用where查询一下
SELECT
a.region_id,
region_name,
express_name
FROM
xm_region a
LEFT JOIN xm_region_express b
ON a.`region_id` = b.`region_id`
WHERE a.`region_id` = b.`region_id`
这样查出来的就只有跟region表对应的结果,而没有NULL的结果!