Supprimer les doublons dans un fichier

DELETE FROM monfichier a
WHERE RRN(a) NOT IN ( SELECT MAX(RRN(b)) FROM monfichier b
WHERE (a.cle1, a.cle2) = (b.cle1, b.cle2) )

Explications :
La fonction RRN permet de récupérer le numéro d’enregistrement de la ligne.
Le SQL supprime donc les doublons (clé1+clé2 dans l’exemple) qui ne correspondent pas au dernier numéro d’enregistrement.

Si on veut conserver le premier doublon et non le dernier doublon, il faut remplacer MAX par MIN :
DELETE FROM monfichier a
WHERE RRN(a) NOT IN ( SELECT MIN(RRN(b)) FROM monfichier b
WHERE (a.cle1, a.cle2) = (b.cle1, b.cle2) )

Pour simplement chercher les doublons, on peut utiliser :
SELECT * FROM monfichier a
WHERE RRN(a) NOT IN ( SELECT RRN(b) FROM monfichier b
WHERE (a.cle1, a.cle2) = (b.cle1, b.cle2) )

Laisser un commentaire