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 derniere modif' d'une table [ par zebiker ] Salut !Voila je vois que sur la page d'administration de mysql on peut voir &#224; quelle date et heure a &#233;t&#233; modifi&#233;e pour la derniere scruter une table [ par greg0683 ] bonjour voila j'aimerais qu emon programme&nbsp; m'avertisse lorsque qu'un changement apparait dans ma table pour cela j'ai mis en place un thread qui Changer un enregistrement dans une table... [ par spike911 ] [EasyPHP phpMyAdmin 2.5.3 MSQL]Bon ma question pourrais passe pour une question idiote mais, je suis d&#233;butent en MSQL alors j'aimerais avoir un p Récupération de données des tables listés dans un autre table... [ par killysui ] Bonjour!!!J'ai un petit soucis...J'ai une base de donn&#233;es contenant une table Toto(Id_Toto, Toto, Nom_Table)qui contient presque toutes la liste SELECT Multiple [ par PunkDude424 ] Salut, j'ai une base de donn&#233;e pour gerer des rendez-vous...j'ai une table rendezvous, une table daterendezvous et une table conger....Chauqe ren Nom de table non valide ?! [ par geii82 ] bonjour &#224; tous amis d&#233;vellopeurs, voila j'utilise un code pour cr&#233;er une base de donn&#233;e en local sur un pocket pc, cela me renvoi [Access] Update ??? [ par BasicInstinct ] Bonjour tout le monde,Voici mon probleme :J'ai une table Contrats, avec la liste des contrats pour un client... clientID,....... montant......J'ai une Championnat [ par elpens ] Bonjour,Je voudrais effectuer une base de donn&#233;e pour une &#233;quipe, et je vous demande de l'aide pour la conception.Je pensais cr&#233;er une Annonce [ par yanne1985 ] salute je suis entrain de realiser un site des annonce et je demande votre aide pour la conception de la base de donn&#233;e voila: j'ai plusieur tabl


Nos sponsors

Sondage...

CalendriCode

Octobre 2008
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Appels d'offres

Téléchargements



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, 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,390 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é.