myślę, że może po prostu spróbuj dodać unikatowy indeks używając IGNORUJ:
ALTER IGNORE TABLE `table` ADD UNIQUE INDEX `name` (`column`);
MySQL powinien odpowiedzieć z czymś takim:
Query OK, 4524 rows affected (1.09 sec)
Records: 4524 Duplicates: 9342 Warnings: 0
Oczywiście, można zostawić to do MySQL, aby zdecydować, które wiersze upuścić.
EDIT:
to działa tak wielu kolumn, jak chcesz: dokumentację
ALTER IGNORE TABLE `table` ADD UNIQUE INDEX `name` (`col1`, `col2`, `col3`);
czeku MySQL na CREATE INDEX. Wspólnym groszkiem (co najmniej jeden raz napotkany) jest zapomnieć, że NULL = NULL
nie jest prawdą (ale NULL
), stąd {42, NULL} i {42, NULL} są dozwolone dla indeksu UNIQUE na dwóch kolumnach.
jeśli masz na przykład 3 duplikaty wierszy do roku 2008, które wiersze zdecydujesz usunąć? –
Duplikat http://stackoverflow.com/q/18932/80714 Odpowiedź jest jasna i zwięzła. – Chadwick
To nie jest to samo pytanie –