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

Supprimer les entrées en double dans une table MySQL

Vous pouvez facilement le faire en sélectionnant cette requête dans une autre table, puis en la renommant pour remplacer l'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`;

Notez que ce CREATE doit être ajusté au format réel de votre tableau. J'ai ajouté la clé unique dans le champ de l'e-mail comme suggestion sur la façon dont vous éviteriez les doublons en premier lieu.

Alternativement, vous pouvez boucler sur ceci

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

Ce qui supprimerait un enregistrement en double par appel. L'importance de la limite est de ne pas supprimer les deux lignes pour tout doublon