sql >> Database >  >> RDS >> Mysql

Dubbele vermeldingen in een MySQL-tabel verwijderen

U kunt dit vrij eenvoudig doen door die query in een andere tabel te selecteren en deze vervolgens te hernoemen om de originele te vervangen.

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

Merk op dat deze CREATE moet worden aangepast aan uw werkelijke tabelformaat. Ik heb de unieke sleutel aan het e-mailveld toegevoegd als suggestie over hoe je duplicaten in de eerste plaats zou voorkomen.

U kunt dit ook doorlussen

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

Wat één dubbele record per gesprek zou verwijderen. Het belang van de limiet is om niet beide rijen te verwijderen voor een duplicaat



  1. Gegevens importeren uit Excel-spreadsheet of CVS in MySQL

  2. Negeren invoegen - is er een manier om te weten of de instructie is genegeerd? MYSQL

  3. Selecteer meest voorkomende waarde uit een veld in MySQL

  4. Hoe MySQL-implementaties te bewaken met Prometheus &Grafana op ScaleGrid