Penso che potresti semplicemente provare ad aggiungere un INDICE UNICO usando IGNORE:
ALTER IGNORE TABLE `table` ADD UNIQUE INDEX `name` (`column`);
MySQL dovrebbe rispondere con qualcosa del tipo:
Query OK, 4524 rows affected (1.09 sec)
Records: 4524 Duplicates: 9342 Warnings: 0
Ovviamente, lascerai a MySQL decidere quali righe eliminare.
MODIFICA:
questo funziona per tutte le colonne che vuoi:
ALTER IGNORE TABLE `table` ADD UNIQUE INDEX `name` (`col1`, `col2`, `col3`);
controlla la documentazione di MySQL su CREATE INDEX
. Un trucco comune (almeno uno che ho incontrato una volta) è dimenticare che NULL = NULL
non è vero (ma NULL
), quindi {42, NULL} e {42, NULL} sono consentiti per un indice UNIQUE su due colonne.