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

Изтриване на дублиращи се редове от таблица

Да, ако приемем, че имате уникално поле за идентификатор, можете да изтриете всички записи, които са еднакви с изключение на идентификатора, но нямат "минималния идентификатор" за тяхната група стойности.

Примерна заявка:

DELETE FROM Table
WHERE ID NOT IN
(
SELECT MIN(ID)
FROM Table
GROUP BY Field1, Field2, Field3, ...
)

Бележки:

  • Свободно избрах „Таблица“ и „ИД“ като представителни имена
  • Списъкът с полета („Поле1, Поле2, ...“) трябва да включва всички полета с изключение на ИД
  • Това може да е бавна заявка в зависимост от броя на полетата и редовете, но очаквам, че ще е наред в сравнение с алтернативите.

РЕДАКТИРАНЕ:В случай, че нямате уникален индекс, моята препоръка е просто да добавите автоматично нарастващ уникален индекс. Основно защото е с добър дизайн, но и защото ще ви позволи да изпълните заявката по-горе.



  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

  2. Как да добавя общ ред в MySQL

  3. SQLSTATE[HY000] [1045] Достъпът е отказан за потребител 'username'@'localhost' с помощта на CakePHP

  4. Как да включите PHP променлива в MySQL оператор

  5. Помощ за обновяване на MySQL