Bonjour,
Voici une requête qui vous permettera de connaitre la liste des enregsitrements en doublon, cela peut servir, par exemple, dans le cas où vous ne voulez pas définir de clé primaires ou bien si vous voulez effectuer des recherches de doublons sur clé partielle,.. que sais-je encore !
Source / Exemple :
Select Ch1,Ch2,Ch3 from maTable
<where ....>
Group by Ch1,Ch2,Ch3
Having count(*) > 1
Conclusion :
En espérant que cela serve à quelqu'un !
++
Moustachu
15 juin 2008 à 13:48
La clause IN est parfois beaucoup plus lente que la clause EXISTS, notamment sur Access. Sur des véritables SGBD je suis pas sûr qu'il y ait une grande différence.
++
moustachu
14 juin 2008 à 21:52
Merci pour ces deux requêtes. Seulement la requête de suppression a quand même mis 745 secondes pour supprimer une cinquantaine d'enregistrements dans une table de 5300 lignes. Pourtant j'avais passer le champ en question en index juste avant.
Y'a pas moyen de raccourcir un peu le temps d'exécution?
+++
7 juin 2007 à 13:30
8 févr. 2007 à 17:49
Pas grave, executez la plusieurs fois ...
8 févr. 2007 à 17:45
Avant, il faut jouter une clef primaire unique auto-incrémenté (id_Ch )
DELETE FROM MaTable
WHERE (id_Ch IN
(SELECT MAX(id_Ch) AS id_a_supprimer
FROM
(SELECT id_Ch, Ch1, Ch2, Ch3
FROM MaTable
WHERE ((Ch1 + Ch2 + Ch3) IN
(SELECT Ch1 + Ch2 + Ch3 AS MaConcatenation
FROM MaTable
GROUP BY Ch1, Ch2, Ch3
HAVING (COUNT(*) > 1)
)
)
) DERIVEDTBL
GROUP BY Ch1, Ch2, Ch3
)
)
Je sais, c'est pas très élégant, mais ca marche.
Ankou22
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.