Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Usuwanie zduplikowanych rekordów SQL, aby umożliwić unikalny klucz

W odpowiedzi na Twój komentarz, oto zapytanie, które działa w MySQL:

delete YourTable
from YourTable
inner join YourTable yt2
on YourTable.product_id = yt2.product_id
and YourTable.id < yt2.id

To usunie tylko zduplikowane wiersze. inner join odfiltruje ostatni wiersz dla każdego produktu, nawet jeśli nie istnieją inne wiersze dla tego samego produktu.

PS Jeśli spróbujesz aliasować tabelę po FROM , MySQL wymaga podania nazwy bazy danych, na przykład:

delete <DatabaseName>.yt
from YourTable yt
inner join YourTable yt2
on yt.product_id = yt2.product_id
and yt.id < yt2.id;


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Dlaczego ActiveRecord destroy_all trwa tak długo?

  2. Pięć najlepszych aplikacji umożliwiających dostęp do serwerów MySQL/MariaDB

  3. Spraw, aby logowanie do witryny działało również na WordPress

  4. Zmiana kodowania znaków MySQL. Czy zachowana jest integralność danych?

  5. Nieefektywny plan wykonania przyjęty przez MySQL InnoDB