私のテーブル名はダミーで、ID、NAME、TIMESTAMP、およびその他の 3 つの列の 6 つの列が含まれています。
ID、NAME、TIMESTAMP の値が別の行と一致する重複行を削除したい。ID、NAME、および TIMESTAMP の値が同じ行が複数ある場合は、1 つを保持して他を削除します。
私のテーブル名はダミーで、ID、NAME、TIMESTAMP、およびその他の 3 つの列の 6 つの列が含まれています。
ID、NAME、TIMESTAMP の値が別の行と一致する重複行を削除したい。ID、NAME、および TIMESTAMP の値が同じ行が複数ある場合は、1 つを保持して他を削除します。
ここに解決策があります
https://stackoverflow.com/a/5016434
私が遭遇した別の可能な解決策:
DELETE n1 FROM names n1, names n2 WHERE n1.id > n2.id AND n1.name = n2.name
最小の ID 値を持つ行を保持したい場合 OR
DELETE n1 FROM names n1, names n2 WHERE n1.id < n2.id AND n1.name = n2.name
https://stackoverflow.com/a/5770309
DELETE DupRows.*
FROM MyTable AS DupRows
INNER JOIN (
SELECT MIN(ID) AS minId, col1, col2
FROM MyTable
GROUP BY col1, col2
HAVING COUNT(*) > 1
) AS SaveRows ON SaveRows.col1 = DupRows.col1 AND SaveRows.col2 = DupRows.col2
AND SaveRows.minId <> DupRows.ID;