begin process at 2010 07 29 22:29:35
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Tâches

 > SUPPRESSION DE DOUBLONS

SUPPRESSION DE DOUBLONS


 Information sur la source

Note :
3 / 10 - par 1 personne
3,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Tâches Classé sous :doublons, suppression, maintenance, tache Niveau :Débutant Date de création :13/10/2008 Vu :13 604

Auteur : maxroucool

Ecrire un message privé
Site perso
Ce membre participe au partage de revenus publicitaires
Commentaire sur cette source (8)
Ajouter un commentaire et/ou une note


 Description

C'est une suite de requêtes qui permettent de supprimer les doublons d'une table. Il y en a d'autre sur le site, mais j'ai pas réussi à m'en servir, alors j'ai fait la mienne.

Je l'ai testé sur un table de 12000 enregistrements, et elle s'est exécuté en quelques centièmes de secondes.

Remplacer:
- "MaTable" par le nom de la table qui contient des doublons
- "ChampsAvecDoublons" par le nom du champs qui contient des doublons

Source

  • CREATE TEMPORARY TABLE MaTable_temp SELECT id FROM MaTable GROUP BY ChampsAvecDoublons;
  • ALTER TABLE MaTable_temp ADD UNIQUE (id);
  • DELETE FROM MaTable WHERE id NOT IN (SELECT id FROM MaTable_temp);
  • DROP TEMPORARY TABLE MaTable_temp;
  • OPTIMIZE TABLE MaTable;
CREATE TEMPORARY TABLE MaTable_temp SELECT id FROM MaTable GROUP BY ChampsAvecDoublons;

ALTER TABLE MaTable_temp ADD UNIQUE (id);

DELETE FROM MaTable WHERE id NOT IN (SELECT id FROM MaTable_temp);

DROP TEMPORARY TABLE MaTable_temp;

OPTIMIZE TABLE MaTable;

 Conclusion

Je ne suis pas très expérimenté en SQL, donc j'ai fait avec les moyens du bord, mais ca marche impec et très rapidement. Si vous avez de meilleurs idées, je serais heureux d'apprendre!


 Sources de la même categorie

SQL SERVER 2000 - VIDER ET COMPACTER TOUTES LES BASES DE DON... par fabrice69
SQL SERVER : VÉRIFICATION DE L'ESPACE LIBRE SUR LE SERVEUR par skweeky
Source avec Zip LISTE DES PAYS DU MONDE EN FRANÇAIS/ANGLAIS DANS UNE BASE SQ... par Joe_le_mort
SQL SERVER 2000 - CREER DES INDEXES SUR UN CHAMP EXISTANT DA... par fabrice69
SQL SERVER 2005 - LISTER LES MODES DE RECUPERATION DE TOUTES... par fabrice69

 Sources en rapport avec celle ci

REQUETE SUPPRESSION DE DOUBLON SOUS ORACLE par lamjed
REQUETE SUPPRESSION DE DOUBLON par tba
DESTRUCTION D'UNE TABLE par vladam

Commentaires et avis

Commentaire de petifa le 13/10/2008 17:20:57

oki, ça peut être utile...
thx

Commentaire de dmuller le 20/10/2008 11:56:54

Solution bien compliquée pour faire cela :

CREATE TABLE table_sans_doublon
  AS SELECT DISTINCT colonne_doublons
     FROM   table_avec_doublons;

Commentaire de Julien39 le 20/11/2008 17:48:05 3/10

Oui, étonnant d'aller chercher aussi loin alors qu'un simple DISTINCT suffit !!!

Commentaire de exar le 09/03/2009 14:15:56

Je ne sais pas si ça fonctionne avec d'autres SGBD's, mais avec Oracle, il suffit de faire:

DELETE FROM
   MaTable A
WHERE
   A.rowid >
   ANY (SELECT B.rowid
   FROM
      MaTable B
   WHERE
      (A.col1 = B.col1 OR (A.col1 is null AND B.col1 is null))
   AND
      (A.col2 = B.col2 OR (A.col2 is null AND B.col2 is null))
   )
;

Ou encore:

delete from
   MaTable
where rowid in
(select rowid from
   (select
     rowid,
     row_number()
    over
     (partition by col1 order by col1) dup
    from MaTable)
  where dup > 1);

Commentaire de hicham1965 le 28/03/2009 14:48:24

oui julien39,

c facile avec "distinct" pour "select distinct champ from table"

mais pour : ""
SELECT  Distinct Formation.N_CIN, Personnel.DOTI, Personnel.nom_prenom, Personnel.Service, Formation.Lieu_Formation FROM Formation INNER JOIN Personnel ON Formation.N_CIN=Personnel.cin;
"

ca devient compliqué

Commentaire de dmuller le 30/03/2009 09:47:27

En quoi est-ce plus compliqué ?

Si vous voulez gérer le distinct sur "", remplacer le par n'importe quelle valeur bidon :
   SELECT DISTINCT DECODE(colonne_a_traiter, '', '@@@@', colonne_a_traiter)
   FROM table_a_traiter;

Si vous voulez gérer le distinct sur la valeur NULL, remplacer la par n'importe quelle valeur bidon :
  SELECT DISTINCT NVL(colonne_a_traiter, '@@@@')
  FROM table_a_traiter;

En espérant vous avoir été utile.

Commentaire de exar le 30/03/2009 11:16:23

Hello !

Attention qu'un distinct est coûteux en temps: il faut effectuer un sort unique...  S'il y a un order by dans la query, on trie une seconde fois.
De plus, s'il y a des doublons, c'est qu'il y a un problème au niveau du datamodel...

Commentaire de dymsbess le 03/06/2009 18:34:57

Tu peux aussi utiliser la tâche "Regroupement probable" dans SSIS.

http://www.xoowiki.com

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

Suppression de chiffres après la virgule. [ par MureMusc ] Bonjour je cherche à ne garder que deux chiffres apres la virgule. Ma donnée est composée de 6 chiffres apres la virgule, et je dois re éléiminatio des doublons : instruction delete avec jointure [ par overider ] Bonjour à tousje souhaite eliminer les doublons dans un table.J'ai d'abord rechercher les doublons (merci a kechia pour sa requette) puis je les [SQL SERVEUR 2000]Suppression et contrainte integrite ! [ par jimmy69 ]   bonjour a tous, J'ai un p'tit souci au point de vue des suppressions dans mes tables !je vous explique ... J'ai un projet qui contient quelques ms sql serveur 2000 => plan de maintenance !!! [ par jimmy69 ] Bonjour a tous , je debute sous sql serveur et en naviguant ds les menus j'ai decouvert le plan de maintenance de base de donnees ! j'ai donc cree un Suppression de caracteres dans un champ TEXT [ par Sbt ] Bonjour à tous, Dans une de mes tables, il y a un champ TEXT, nommé RES_TXT. Dans ce champ, on y insert tout un fichier texte, sur lequel on n'a pas Doublons [ par piep14 ] Bonjour, j'aimerais savoir s'il est possible d'extraire directement dans la base de données tous les doublons ! Merci le forum pb requette doublons [ par skiso ] cette requette me sort des doublons :SELECT * FROM agences a inner join annonces b on a.AGENCE = b.AGENCE WHERE a.commune='$com'comment faire pour ne Suppression de procédures stockées dont les tables n'existantes [ par kozher20 ] Bonjour à tous,J'aurais voulu savoir s'il existait une méthode pour connaître et supprimer les procédures stockées dont les t Suppression doublons... [ par billut ] salut a tous, voila je vous explique vite faitca fais quelques temps que je galere sur une requete toute simple, mais la jen peux plus, jai cherch&#23 Suppression de doublon.... [ par Ry_Yo ] Bonjour à tous,Je travail sous sqlserver et après recherche sur votre site, je n'ai pas trouvé de méthode pour supprimer des doubl


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Juillet 2010
LMMJVSD
   1234
567891011
12131415161718
19202122232425
262728293031 

Consulter la suite du CalendriCode

 
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

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,858 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales