2 techniques pour supprimer les doublons MySQL sur plusieurs colonnes

Développement web avr. 20, 2020

Il arrive parfois de devoir injecter des données dans un schema existant.

Sauf que si l'on a des clés uniques, ca peut vite compliquer l'import.

Voici donc 2 techniques pour supprimer les doublons d'une table a partir d'une requête SQL.

Supprimer les doublons avec une sous-requête. Si vous avez plus de doublons, vous pouvez répéter la requête jusqu'à ne plus avoir de doublons.

DELETE FROM my_table
WHERE id IN (
  SELECT calc_id FROM (
    SELECT MAX(id) AS calc_id
    FROM my_table
    GROUP BY field1, field2, field3
    HAVING COUNT(id) > 1
  ) temp
)

Ou si le serveur MySQL a une version antérieure a 5.6. Cela supprimera automatiquement les doublons en ne gardant que le premier enregistrement trouvé.

ALTER IGNORE TABLE your_table ADD UNIQUE (field1,field2,field3);