Ich denke, Sie könnten einfach versuchen, einen UNIQUE INDEX mit IGNORE:
hinzuzufügenALTER IGNORE TABLE `table` ADD UNIQUE INDEX `name` (`column`);
MySQL sollte mit etwas wie:
antwortenQuery OK, 4524 rows affected (1.09 sec)
Records: 4524 Duplicates: 9342 Warnings: 0
Natürlich überlassen Sie es MySQL, zu entscheiden, welche Zeilen gelöscht werden sollen.
BEARBEITEN:
das funktioniert für beliebig viele Spalten:
ALTER IGNORE TABLE `table` ADD UNIQUE INDEX `name` (`col1`, `col2`, `col3`);
Überprüfen Sie die MySQL-Dokumentation unter CREATE INDEX
. Ein häufiger Fallstrick (mindestens einer, dem ich einmal begegnet bin) ist, dass NULL = NULL
vergessen wird ist nicht wahr (aber NULL
), daher sind {42, NULL} und {42, NULL} für einen UNIQUE-Index für zwei Spalten zulässig.