Mysql
 sql >> Database >  >> RDS >> Mysql

MySql:rimuovere le righe della tabella in base ai valori duplicati della colonna?

Penso che potresti semplicemente provare ad aggiungere un INDICE UNICO usando IGNORE:

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

MySQL dovrebbe rispondere con qualcosa del tipo:

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

Ovviamente, lascerai a MySQL decidere quali righe eliminare.

MODIFICA:

questo funziona per tutte le colonne che vuoi:

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

controlla la documentazione di MySQL su CREATE INDEX . Un trucco comune (almeno uno che ho incontrato una volta) è dimenticare che NULL = NULL non è vero (ma NULL ), quindi {42, NULL} e {42, NULL} sono consentiti per un indice UNIQUE su due colonne.