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);