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);
posted @   阿松0919  阅读(1427)  评论(0编辑  收藏  举报
(评论功能已被禁用)
相关博文:
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
点击右上角即可分享
微信分享提示