Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Entfernen Sie doppelte Einträge in einer MySQL-Tabelle

Sie könnten dies ganz einfach tun, indem Sie diese Abfrage in einer anderen Tabelle auswählen und sie dann umbenennen, um das Original zu ersetzen.

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`;

Beachten Sie, dass dieses CREATE sollte an Ihr tatsächliches Tabellenformat angepasst werden. Ich habe den eindeutigen Schlüssel im E-Mail-Feld als Vorschlag hinzugefügt, wie Sie Duplikate von vornherein verhindern würden.

Alternativ können Sie dies auch überschleifen

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

Was einen doppelten Datensatz pro Anruf löschen würde. Die Bedeutung des Limits besteht darin, nicht beide Zeilen für Duplikate zu entfernen