Mysql
 sql >> Base de données >  >> RDS >> Mysql

MySql :supprimer les lignes du tableau en fonction des valeurs en double des colonnes ?

Je pense que vous pourriez simplement essayer d'ajouter un UNIQUE INDEX en utilisant IGNORE :

ALTER IGNORE TABLE `table` ADD UNIQUE INDEX `name` (`column`);

MySQL devrait répondre par quelque chose comme :

Query OK, 4524 rows affected (1.09 sec)
Records: 4524 Duplicates: 9342 Warnings: 0

Bien sûr, vous laisserez à MySQL le soin de décider quelles lignes supprimer.

MODIFIER :

cela fonctionne pour autant de colonnes que vous le souhaitez :

ALTER IGNORE TABLE `table` ADD UNIQUE INDEX `name` (`col1`, `col2`, `col3`);

consultez la documentation de MySQL sur CREATE INDEX . Un piège commun (au moins un que j'ai rencontré une fois) est d'oublier que NULL = NULL n'est pas vrai (mais NULL ), donc {42, NULL} et {42, NULL} sont autorisés pour un index UNIQUE sur deux colonnes.