Mysql
 sql >> база данни >  >> RDS >> Mysql

Премахване на дублиращи се записи в MySQL таблица

Бихте могли доста лесно да направите това, като изберете тази заявка в друга таблица и след това я преименувате, за да замени оригинала.

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

Имайте предвид, че този CREATE трябва да се коригира към действителния формат на вашата таблица. Добавих уникалния ключ в полето за имейл като предложение за това как бихте предотвратили дублирането на първо място.

Като алтернатива можете да преминете през това

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

Което би изтрило един дублиран запис на повикване. Важността на ограничението е да не премахвате и двата реда за всеки дубликат



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL INSERT - Имената на полетата изискват ли разграничаване с обратна отметка/акцент?

  2. Как да проследите промените в множество колони в таблицата на базата данни за целите на одита?

  3. Актуализиране на таблица в оператор за избор

  4. Как да намерите уникални двойки от две колони в SQL?

  5. Присъединете се към подзаявка с доктрина 2 DBAL