sql >> Database teknologi >  >> RDS >> Mysql

Fjern duplikerede poster i en MySQL-tabel

Du kan ret nemt gøre dette ved at vælge den forespørgsel i en anden tabel og derefter omdøbe den for at erstatte originalen.

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

Bemærk, at denne CREATE skal justeres til dit faktiske tabelformat. Jeg tilføjede den unikke nøgle i e-mail-feltet som et forslag til, hvordan du ville forhindre dubletter i første omgang.

Alternativt kan du sløjfe over dette

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

Hvilket ville slette én dubletpost pr. opkald. Vigtigheden af ​​grænsen er ikke at fjerne begge rækker for nogen duplikat



  1. Opretter forbindelse til MySQL-database over server

  2. Sådan tælles de rækker, der indeholder værdier, der ikke er nul, i sql

  3. Parallelle transaktioner i mysql

  4. mysql hvordan man sammenligner dato i formatet dd-man-åå