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);
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!