sql >> Databasteknik >  >> RDS >> Mysql

Ta bort dubbletter i en MySQL-tabell

Du kan ganska enkelt göra detta genom att välja den frågan i en annan tabell och sedan byta namn på den för att ersätta originalet.

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

Observera att denna CREATE bör justeras till ditt faktiska tabellformat. Jag lade till den unika nyckeln i e-postfältet som ett förslag på hur du skulle förhindra dubbletter i första hand.

Alternativt kan du gå över detta

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

Vilket skulle radera en dubblettpost per samtal. Vikten av gränsen är att inte ta bort båda raderna för någon dubblett



  1. Finns det ett OM FINNS-test för en länkad server?

  2. MySQL LAST_INSERT_ID() används med flera poster INSERT-sats

  3. Array i SQL Query?

  4. Inaktivera säker priv för dataladdning på MySQL