在使用mysql進行join操作時,有時會出現重復記錄的情況,而我們只需要取出其中一條記錄。這時可以通過以下幾種方式解決。
1. 使用group by
SELECT t1.*,t2.* FROM table1 t1 LEFT JOIN table2 t2 ON t1.id = t2.id GROUP BY t1.id;
這種方式通過group by對t1.id分組,只取每組的第一條記錄。但是如果t1.id有重復值,會產生錯誤的結果。
2. 使用distinct關鍵字
SELECT DISTINCT t1.*,t2.* FROM table1 t1 LEFT JOIN table2 t2 ON t1.id = t2.id;
這種方式使用distinct關鍵字,去重t1.id,只保留不重復的記錄。但是如果t1和t2中有不同值的字段,就無法準確取出一條記錄。
3. 使用子查詢
SELECT t1.*,t2.* FROM table1 t1 LEFT JOIN ( SELECT * FROM table2 GROUP BY id ) t2 ON t1.id = t2.id;
這種方式先使用子查詢對t2進行去重,再進行join操作。但是如果t2中有需要查詢的字段沒有在group by中,也會產生錯誤的結果。
可以根據實際情況選擇適合的方式解決mysql join只取一條記錄的問題。