MySQL左外关联查询,查询结果数量大于左表数量


1. MySQL左外关联查询

LEFT OUTER JOIN 是以左表为基准去匹配右表的数据,若右表匹配不到,则右表字段为空。因此正常情况,查询结果数量是与左表数据量相等的。

SELECT COUNT(*) FROM `tb_a` LEFT OUTER JOIN `tb_b` 
  ON `tb_a`.`column_1` = `tb_b`.`column_2`;

2. 问题

但有时查询结果多于左表的数据量。原因是tb_a与tb_b是一对多的关系,一条a的数据匹配到了多条b的数据。

3. 解决

若两表是一对一的关系,需要清理tb_b中的脏数据。
查询方法:

SELECT * FROM `tb_b` WHERE `column_2` IN 
  (SELECT `column_2` FROM `tb_b` GROUP BY `column_2` HAVING COUNT(`column_2`) > 1);


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM