赞
踩
现在有两张表,部门表,和用户表


现在需要查询出各个部门里面女性的数量
下面两种写法对比下就知道了
- 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中
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。