Myślę, że możesz po prostu spróbować dodać UNIKALNY INDEX za pomocą IGNORE:
ALTER IGNORE TABLE `table` ADD UNIQUE INDEX `name` (`column`);
MySQL powinien odpowiedzieć w następujący sposób:
Query OK, 4524 rows affected (1.09 sec)
Records: 4524 Duplicates: 9342 Warnings: 0
Oczywiście decyzję, które wiersze mają zostać usunięte, pozostawisz MySQL.
EDYCJA:
działa to dla dowolnej liczby kolumn:
ALTER IGNORE TABLE `table` ADD UNIQUE INDEX `name` (`col1`, `col2`, `col3`);
sprawdź dokumentację MySQL na UTWÓRZ INDEKS
. Częstą pułapką (przynajmniej raz na którą natknąłem się) jest zapomnienie, że NULL = NULL
nie jest prawdziwe (ale NULL
), stąd {42, NULL} i {42, NULL} są dozwolone dla indeksu UNIQUE w dwóch kolumnach.