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