En muchas ocasiones es necesario eliminar registros duplicados de una tabla, MySQL nos avisa cuando intentamos crear una clave única basada en algunos campos y nos dice que no es posible. Antes deberemos eliminar los registros duplicados para crear el índice único.
MySQL ofrece distintas opciones, nosotros vamos a explicar una de las más simples.
Consiste en crear un índice único y al mismo tiempo eliminar los registros que sobran, para conseguirlo utilizaremos “ALTER IGNORE TABLE”.
Un ejemplo:
alter ignore table directorio add unique index idx_directorio(url);
El ejemplo anterior, eliminará de una tabla los registros que tengan la url duplicada, dejará uno y el resto serán eliminados.
Advertencia:
En algunas versiones de MySQL, la técnica anterior sólo funciona con tablas myISAM. Si tu tabla es InnoDB deberás convertirla primero a MyISAM y por último volverla a convertir a InnoDB.