Salut,
Première chose, dans une clause EXISTS pas la peine de mettre quelque chose dans la clause SELECT, SELECT * est très bien dans ce cas.
Deuxièmement, la requête de suppression, doit supprimer tous les enregistrements qui ont un doublon, au lieu de retirer seulement les enregistrement en trop...
Comme c'est sur Access, je ne connais pas la manière idéale de faire.
En général dans la table à dédoublonner on ajoute un champ, type auto-incrément (s'il y a déjà une clef primaire sur la table on utilisera celle-ci), la requête donnerait dans ce cas :
DELETE
FROM PS_MM_LIGNE
WHERE ChampInc IN
(SELECT MAX(ChampInc)
FROM PS_MM_DOUBLON t2 ,PS_MM_LIGNE t1
WHERE t1.MM_REF1 = t2.MM_REF1
AND t1.MM_REF2 = t2.MM_REF2
GROUP BY t2.MM_REF1 , t2.MM_REF2
HAVING COUNT(*) > 1))
Ici on part du principe qu'il n'y a que des doublons (pas de triples, etc.), s'il y en avait il faudrait réexecuter une nouvelle fois la requête.
Christian Robert - Winwise
http://blogs.developpeur.org/christian/MCT - Database Development / Database Administration