Mysql
 sql >> Base de données >  >> RDS >> Mysql

Comment supprimer les doublons dans une table SQL basée sur plusieurs champs

Vous devriez pouvoir faire une sous-requête corrélée pour supprimer les données. Trouvez toutes les lignes qui sont des doublons et supprimez-les toutes sauf celle avec le plus petit identifiant. Pour MYSQL, une jointure interne (équivalent fonctionnel d'EXISTS) doit être utilisée, comme ceci :

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)

Pour tester, remplacez delete games from games avec select * from games . Ne vous contentez pas d'exécuter une suppression sur votre base de données :-)