sql >> Databasteknik >  >> RDS >> Mysql

Ta bort dubbletter av rader med sql

Försök att välja dubbletter först, ta bort dem

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
)

Hoppas det hjälper!!!

MODIFIERAD:Baserat på kommentaren, om du vill behålla en post , kan du göra en join och behålla det lägsta värdet

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)

Se till att göra en säkerhetskopia innan du kör frågan ovan...



  1. MySQL-funktion för att beräkna avståndet mellan två latituder och longituder

  2. CONV() funktion i snöflinga

  3. mysqli förberedd uttalande - uppdatera inte NULL-värden

  4. Hur ser man om en användare är online på en webbplats med php- och mysql-drivna databaser?