sql >> Databáze >  >> RDS >> Mysql

Odstraňte duplicitní položky v tabulce MySQL

Můžete to docela snadno udělat tak, že vyberete daný dotaz do jiné tabulky a poté jej přejmenujete, abyste nahradili původní.

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

Všimněte si, že toto CREATE by měl být upraven podle skutečného formátu tabulky. Přidal jsem jedinečný klíč do pole e-mailu jako návrh, jak byste zabránili duplicitám.

Alternativně můžete přejít přes toto

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

Což by odstranilo jeden duplicitní záznam na hovor. Důležitost limitu je neodstranit oba řádky u žádného duplikátu



  1. Mohu v MySQL po smazání vrátit smazané řádky?

  2. poddotaz vrátí více než jeden řádek

  3. SQL Deaktivační spouštěč

  4. neúplné informace z dotazu na pg_views