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

supprimer les lignes en double en fonction d'une valeur de colonne

Ceci est similaire à la requête de Gordon Linoff, mais sans la sous-requête :

DELETE t1 FROM table t1
  JOIN table t2
  ON t2.refID = t1.refID
  AND t2.ID < t1.ID

Cela utilise une jointure interne pour supprimer uniquement les lignes où il y a une autre ligne avec le même refID mais un ID inférieur.

L'avantage d'éviter une sous-requête est de pouvoir utiliser un index pour la recherche. Cette requête devrait bien fonctionner avec un index multi-colonnes sur refID + ID.