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

Eliminar entradas duplicadas en una tabla MySQL

Puede hacer esto muy fácilmente seleccionando esa consulta en otra tabla y luego renombrándola para reemplazar la original.

CREATE TABLE `table2` (
  `name` varchar(255), 
  `email` varchar(255), 
  UNIQUE KEY `email` (`email`));
INSERT INTO `table2` SELECT `name`, DISTINCT(`email`) FROM `table`;
RENAME TABLE `table` TO `table1`;
RENAME TABLE `table2` TO `table`;

Tenga en cuenta que este CREATE debe ajustarse a su formato de tabla real. Agregué la clave única en el campo de correo electrónico como una sugerencia sobre cómo evitaría los duplicados en primer lugar.

Alternativamente, puede recorrer esto

DELETE FROM `table` 
WHERE `email` IN (
  SELECT `email` FROM `table` GROUP BY `email` HAVING count(*) > 1
) LIMIT 1

Lo que eliminaría un registro duplicado por llamada. La importancia del límite es no eliminar ambas filas por ningún duplicado