Oui, en supposant que vous ayez un champ ID unique, vous pouvez supprimer tous les enregistrements qui sont identiques à l'exception de l'ID, mais qui n'ont pas "l'ID minimum" pour leur groupe de valeurs.
Exemple de requête :
DELETE FROM Table
WHERE ID NOT IN
(
SELECT MIN(ID)
FROM Table
GROUP BY Field1, Field2, Field3, ...
)
Remarques :
- J'ai librement choisi "Table" et "ID" comme noms représentatifs
- La liste des champs ("Field1, Field2, ...") doit inclure tous les champs à l'exception de l'ID
- Cela peut être une requête lente en fonction du nombre de champs et de lignes, mais je pense que ce serait bien par rapport aux alternatives
EDIT :Si vous n'avez pas d'index unique, ma recommandation est d'ajouter simplement un index unique auto-incrémental. Principalement parce que c'est un bon design, mais aussi parce qu'il vous permettra d'exécuter la requête ci-dessus.