在 MySQL 中,SELECT DISTINCT 只能去除完全相同的整行重複記錄。若需根據特定欄位組合(如 username 和 password)去重,並保留符合條件的記錄(例如 ID 最大或最小),則需結合聚合函數與 GROUP BY 實現。
利用子查詢先按目標欄位分組,取得每組的最大或最小 ID,再以此為條件查詢完整記錄。
ID | username | password | TRDESC
---|----------|----------|-------
1 | A | abcdef | QR
2 | A | abcdef | W34
3 | A | bbbbbb | AD
4 | B | aaaaaa | asdf
SELECT * FROM mytable
WHERE ID IN (
SELECT MAX(ID) FROM mytable GROUP BY username, password
);
SELECT * FROM mytable
WHERE ID IN (
SELECT MIN(ID) FROM mytable GROUP BY username, password
);
注意: GROUP BY 只能搭配聚合函數(如 MAX、MIN、COUNT)使用,否則會報錯或產生不確定結果。