Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Löschen doppelter Zeilen mit SQL

Versuchen Sie zuerst, die Duplikate auszuwählen, und löschen Sie sie dann

DELETE FROM usa_city WHERE city_id IN
(
SELECT city_id FROM usa_city
GROUP BY city_name, id_state
HAVING count(city_id) > 1
)

Hoffe es hilft!!!

GEÄNDERT:Basierend auf dem Kommentar, wenn Sie einen Datensatz behalten möchten , können Sie einen Join erstellen und den niedrigsten Wert behalten

DELETE c1 FROM usa_city c1, usa_city c2 WHERE c1.id < c2.id AND 
(c1.city_name= c2.city_name AND c1.id_state = c2.id_state)

Stellen Sie sicher, dass Sie eine Sicherungskopie erstellen, bevor Sie die obige Abfrage ausführen...