Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

MySql:remover linhas da tabela dependendo dos valores duplicados da coluna?


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.