sql >> Database teknologi >  >> RDS >> Mysql

Sletning af dublerede rækker fra en tabel

Ja, forudsat at du har et unikt ID-felt, kan du slette alle poster, der er ens bortset fra ID'et, men som ikke har "minimums-ID" for deres gruppe af værdier.

Eksempelforespørgsel:

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

Bemærkninger:

  • Jeg valgte frit "Tabel" og "ID" som repræsentative navne
  • Listen over felter ("Felt1, Felt2, ...") skal indeholde alle felter undtagen ID'et
  • Dette kan være en langsom forespørgsel afhængigt af antallet af felter og rækker, men jeg forventer, at det ville være okay sammenlignet med alternativer

EDIT:Hvis du ikke har et unikt indeks, er min anbefaling blot at tilføje et automatisk trinvis unikt indeks. Hovedsageligt fordi det er et godt design, men også fordi det giver dig mulighed for at køre forespørgslen ovenfor.



  1. Sådan konfigureres Tomcat til at oprette forbindelse til MySQL

  2. MySQL-replikering med ProxySQL på WHM/cPanel-servere:Del 1

  3. SEC_CASE_SENSITIVE_LOGON Forældet i 12c

  4. Sådan afbrydes udførelsen af ​​en erklæring i PostgreSQL