sql >> Base de Datos >  >> RDS >> Mysql

MySql:¿eliminar las filas de la tabla según los valores duplicados de la columna?

Creo que simplemente podría intentar agregar un ÍNDICE ÚNICO usando IGNORE:

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

MySQL debería responder con algo como:

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

Por supuesto, dejará que MySQL decida qué filas descartar.

EDITAR:

esto funciona para tantas columnas como quieras:

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

consulte la documentación de MySQL en CREAR ÍNDICE . Un problema común (al menos uno con el que me encontré una vez) es olvidar que NULL = NULL no es cierto (pero NULL ), por lo tanto {42, NULL} y {42, NULL} están permitidos para un índice ÚNICO en dos columnas.