Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

DOUBLONS DANS UNE TABLE


Information sur la source



Description

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

  • Select Ch1,Ch2,Ch3 from maTable
  • <where ....>
  • Group by Ch1,Ch2,Ch3
  • Having count(*) > 1
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
 

Commentaires et avis

signaler à un administrateur
Commentaire de fyav le 18/02/2005 12:05:24

simple efficace, bravo

signaler à un administrateur
Commentaire de Domilo le 22/02/2005 09:06:04

Oui,

Et pour aller plus loin, pour lister les éléments en doublon tu peux faire quelquechose comme cela :

Select
    Ch1,Ch2,Ch3,
    AutresChamps1,...

from maTable Lst
  JOIN (
               Select Ch1,Ch2,Ch3 from maTable
               <where ....>
               Group by Ch1,Ch2,Ch3
               Having count(*) > 1
           ) Dbl ON Lst.Ch1 = Dbl.Ch1
                          AND Lst.Ch2 = Dbl.Ch2
                          AND Lst.Ch3 = Dbl.Ch3
ORDER BY
     Ch1,Ch2,Ch3


D'autres préfèreront utiliser un WHER EXISTS qui marche aussi...

signaler à un administrateur
Commentaire de moustachu le 22/02/2005 09:10:32

Merci de vos commentaires
Domilio>Oui tout à fait... et je rpéfère une WHERE EXISTS ;o) mais c'est une question de goût.

signaler à un administrateur
Commentaire de dhardy le 17/01/2006 15:31:12

Bonjour,

Aurais-tu une procédure ou une requête simple qui pourrait effacer les doublons uniquement ?

Merci

signaler à un administrateur
Commentaire de ankou22 le 08/02/2007 17:45:37

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

signaler à un administrateur
Commentaire de ankou22 le 08/02/2007 17:49:10

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 ...

signaler à un administrateur
Commentaire de EMSIEN le 07/06/2007 13:30:58

Bonjour et merci pour ton aide.

signaler à un administrateur
Commentaire de maxroucool le 14/06/2008 21:52:07

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?

+++

signaler à un administrateur
Commentaire de moustachu le 15/06/2008 13:48:45

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

Ajouter un commentaire

Discussions en rapport avec ce code source dans le forum

Suppression de doublon.... [ par Ry_Yo ] Bonjour &#224; tous,Je travail sous sqlserver et apr&#232;s recherche sur votre site, je n'ai pas trouv&#233; de m&#233;thode pour supprimer des doubl Recherche de doublon dans plusieurs champs d'une même table [ par PtitBilou ] Bonjour ! Fraichement larguée par mon employeur dans les méandres de la base de donnée, j'essaie de me dépatouiller pour mettre en place une base de d Pb de requete avec difference de sommes dans 2 table differentes [ par thloz ] Bonjour, J'ai 2 table : Saisie_089 ( champ: Exploit,Nom, et Nbr_h_089) et recu_089 (Nom, Nbr_h). Je souhaite creer une requete qui effectue la diffe CREATE TABLE ERREUR [ par didygwatinik ] Bonjour, Voici le create table de ma table notertexte : &lt;?php$liendb=mysql_connect("localhost","root","");mysql_select_db("jeunestalents");$sql="C Probleme de "structure" [ par Grodaf ] Bonjour à tous je suis en BTS Transport et je dois mener un projet lors d'un stage en entreprise je ne suis pas trop un spécialiste d'Access parce que avant update Insérer les premiers données dans une table historique [ par devap ] Salut;Je travail avec Sqlserver2005 et J'ai une table à laquelle je fais la mise à jour ; Procedure stockée trigger [ par AfKun ] Bonjour,J'ai un petit probleme... je dois faire une procedure suppAvion en plsql qui supprime un tuple dans la table avion  mais aussi les tuples dans procédures stockées pour remplir ma table historique [ par devap ] Bonjour;J'ai  cette PS je cherchais que chaque fois que l'utilisateur modifié la table T1 à partir d'une gridview  les premiers données (avant  update Clé primaire [ par fehrisoukeina ] Bonsoir,LA table empprint contient  clés primaires. create table empprint(codeexp numeric(4),codeadherent numeric(4),dateemp date,dateretour date,CONS Rechercher un champ d'une table "en tant que chaîne" dans le champ d'une autre table [ par Pecas ] Bonjour à tous/toutes, je suis nouveau dans le forum aussi bien que dans Access-SQL. Voici ma question :J'ai une table [Vieux prenoms] avec le champ P


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,406 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.