现在有两张表,部门表,和用户表
现在需要查询出各个部门里面女性的数量
下面两种写法对比下就知道了
SELECT
a.NAME,
count( b.xb ) AS 女性人数
FROM
org a
LEFT JOIN user_b b ON a.`name` = b.bm
AND b.xb = '女'
GROUP BY
a.`name`;
正常
SELECT
a.NAME,
count( b.xb ) AS 女性人数
FROM
org a
LEFT JOIN user_b b ON a.`name` = b.bm
WHERE
b.xb = '女'
GROUP BY
a.`name`;
这里明显就不对了.
区别很明显,where里面的条件会影响最后显示的数据,即限制左表的条件
总结:mysql在left join语句中,左表过滤条件放在where条件中,右表过滤条件应该放on中