Acho que você poderia simplesmente tentar adicionar um UNIQUE INDEX usando IGNORE:
ALTER IGNORE TABLE `table` ADD UNIQUE INDEX `name` (`column`);
O MySQL deve responder com algo como:
Query OK, 4524 rows affected (1.09 sec)
Records: 4524 Duplicates: 9342 Warnings: 0
Claro, você deixará para o MySQL decidir quais linhas descartar.
EDITAR:
isso funciona para quantas colunas você quiser:
ALTER IGNORE TABLE `table` ADD UNIQUE INDEX `name` (`col1`, `col2`, `col3`);
verifique a documentação do MySQL em CREATE INDEX . Uma pegadinha comum (pelo menos uma que encontrei uma vez) é esquecer que
NULL = NULL
não é verdade (mas NULL
), portanto, {42, NULL} e {42, NULL} são permitidos para um índice UNIQUE em duas colunas.