sql >> Database >  >> RDS >> Mysql

Hoe duplicaten in de SQL-tabel te verwijderen op basis van meerdere velden

U zou een gecorreleerde subquery moeten kunnen uitvoeren om de gegevens te verwijderen. Vind alle rijen die duplicaten zijn en verwijder alle, behalve die met de kleinste id. Voor MYSQL moet een inner join (functioneel equivalent van EXISTS) worden gebruikt, zoals:

delete games from games inner join 
    (select  min(id) minid, date, time,
             hometeam_id, awayteam_id, locationcity, locationstate
     from games 
     group by date, time, hometeam_id, 
              awayteam_id, locationcity, locationstate
     having count(1) > 1) as duplicates
   on (duplicates.date = games.date
   and duplicates.time = games.time
   and duplicates.hometeam_id = games.hometeam_id
   and duplicates.awayteam_id = games.awayteam_id
   and duplicates.locationcity = games.locationcity
   and duplicates.locationstate = games.locationstate
   and duplicates.minid <> games.id)

Vervang om te testen delete games from games met select * from games . Voer niet alleen een verwijdering uit op uw DB :-)



  1. 11 manieren om dubbele rijen te vinden die een primaire sleutel hebben in Oracle

  2. Kan ik een trigger starten op de select-instructie in mysql?

  3. Stel de standaardoptie in in de vervolgkeuzelijst php en bewaar deze wanneer de vraag wordt ingediend

  4. onjuist doden van mysqld - start nu niet