Doublons dans une table

Soyez le premier à donner votre avis sur cette source.

Snippet vu 19 025 fois - Téléchargée 33 fois

Contenu du snippet

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

A voir également

Ajouter un commentaire Commentaires
cs_moustachu
Messages postés
1079
Date d'inscription
jeudi 14 novembre 2002
Statut
Membre
Dernière intervention
1 janvier 2012

15 juin 2008 à 13:48
Bonjour,

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
maxroucool
Messages postés
44
Date d'inscription
jeudi 20 novembre 2003
Statut
Membre
Dernière intervention
28 janvier 2013

14 juin 2008 à 21:52
Slt,

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?

+++
EMSIEN
Messages postés
194
Date d'inscription
lundi 26 juillet 2004
Statut
Membre
Dernière intervention
11 juin 2009

7 juin 2007 à 13:30
Bonjour et merci pour ton aide.
cs_ankou22
Messages postés
81
Date d'inscription
vendredi 3 novembre 2000
Statut
Membre
Dernière intervention
7 juin 2012

8 févr. 2007 à 17:49
oups je me rend compte juste après avoir posté que ca marche pas avec les triplons et les quadriplons. Puisque je ne supprimer que le Max(id_Ch)

Pas grave, executez la plusieurs fois ...
cs_ankou22
Messages postés
81
Date d'inscription
vendredi 3 novembre 2000
Statut
Membre
Dernière intervention
7 juin 2012

8 févr. 2007 à 17:45
Je me rend compte que le sujet est un peu ancien, vu que je cherchais a supprimer ces foutus doublons. J'ai trouvé cette solution pour supprimer les doublons.

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
Afficher les 9 commentaires

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.