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

Code

 > 

Procédure

 > REQUETE SUPPRESSION DE DOUBLON

REQUETE SUPPRESSION DE DOUBLON


 Information sur la source

Note :
6 / 10 - par 4 personnes
6,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Procédure Classé sous :doublon, suppression, sql Niveau :Initié Date de création :21/06/2007 Vu :17 347

Auteur : tba

Ecrire un message privé
Commentaire sur cette source (9)
Ajouter un commentaire et/ou une note

 Description

Cette requete SQL permet de supprimer les doublons d'une table sur un champ.
Une seule exécution suffit !
Il est impératif pour qu'elle fonctionne que :
- La table posséde une clé primaire (ce qui devrait toujours etre le cas :)  )
- Le champs sur lequel les doublons sont recherché doit être indexé, sinon la requete fonctionnera mais env 1H pour 10000 enregistrement, sinon, utra rapide, 1s pour 10000.

Ne pas changer  T1 et T2 dans le code de la requete !!!!



Source

  • delete from <table> T1
  • where <clé primaire> not in (select min(<clé primaire>)
  • from <table> T2 where T1.<champ a comparer>=T2.<champ a comparer>
  • group by <champ a comparer>);
delete from <table> T1
where <clé primaire> not in (select min(<clé primaire>) 
from <table> T2 where T1.<champ a comparer>=T2.<champ a comparer>
group by <champ a comparer>);

 Conclusion

voila, comme j'ai l'impression que tout le monde rame pour supprimer des doublons, j'ai mis ce bout de code en espérant que cela puisse aider.


 Sources de la même categorie

Source avec une capture T-SQL - SPLIT SANS TABLE TEMPORAIRE par TheOnlyMaX
Source avec Zip (SQL SERVER) REQUÊTE POUR RECHERCHER UN {GUID} DANS TOUS LES... par lassaad83
[ORACLE]DÉTERMINER LA DATE DU PREMIER JOUR D'UNE SEMAINE PAR... par Bouillou2
T-SQL - PROCÉDURE - STOCKÉE - PLACER DANS UNE TABLE LE RÉSUL... par zavier666
SQL LECTURE IMPORT DE FICHIER TEXTE par PHILIPPO

 Sources en rapport avec celle ci

Source avec une capture T-SQL - SPLIT SANS TABLE TEMPORAIRE par TheOnlyMaX
SUPPRESSION DE DOUBLONS par maxroucool
TROUVER LES PROCHAINS ANNIVERSAIRES par zefo
REQUÊTE SQL POUR DÉTERMINER L'ESPACE OCCUPÉ DANS LES TABLESP... par sgoriaud
REQUETE SUPPRESSION DE DOUBLON SOUS ORACLE par lamjed

Commentaires et avis

Commentaire de bir le 25/06/2007 13:21:18

bjr est ce DISTINCT ne ferai pas l'affaire.

Commentaire de LordBob le 25/06/2007 22:20:27

le truc, c'est que ici on supprime le doublon. le distinct lui permet effectivement de n'afficher qu'une seul ligne, mais c'est une question de performance et de coherence de ta base.

regarde pour la performance, tu as une table de 100 000 enregistrement, et chaque enregistrement posséde 4 doublons. ta base contient alors 4 fois plus de données et lorsque tu va faire des requetes sur cette table, tu va avoir une baisse de performance, une execution de ta requete plus lente puisque tu as 4 fois plus de données a parcourir!

Commentaire de epopoi27 le 10/11/2007 16:18:12

bonjour,

ma version d'essai d'access 2007 me répond obstinément :
"La requête doit avoir au moins un champ de destination"

Kézako ?

Merci d'avance,

Eric

Commentaire de maxroucool le 03/10/2008 15:09:41

Slt tba,

je me souviens avoir déjà testé cette requête qui marchait bien. Je l'ai donc mise dans mes favoris. Seulement je n'arrive pas a la refaire marcher sur la même table, et le même serveur...

J'ai une table "episodes" avec pour clé primaire "id" et le champ dont je veux supprimer les doublons est "url". Voici donc ma requête:

DELETE FROM episodes T1 WHERE id NOT IN (
SELECT min( id )
FROM episodes T2
WHERE T1.url = T2.url
GROUP BY url
)

et voici l'erreur que MySQL me retourne:
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'where id not in (select min(id)
from episodes T2 where T1.url=T2.url
group by ' at line 2


Merci bp!
+++

Commentaire de cirdec14 le 13/11/2008 01:14:27 8/10

bonjour MAXROUCOOL,
ceci fonctionne avec id indexé oui-sans doublons:

DELETE T1.id, *
FROM episodes AS T1
WHERE (((T1.id) Not In (SELECT min( id )
FROM episodes T2
WHERE T1.url = T2.url
GROUP BY url
)));

Commentaire de simodel le 09/12/2008 11:24:26

Bonjour,

j'ai executé ces requêtes mais sans aucun résultat, j'ai une erreur : syntaxe incorrecte vers 'T1' :
Voici ma requête :
DELETE T1.ID, T1.matricule, T1.prenom, T1.nom, T1.psw, T1.Modif, T1.Manager, T1.JNais, T1.MNais, T1.User_Group, T1.User_Population
FROM [user] AS T1
WHERE ((T1.id) Not In (SELECT min( id )
FROM episodes T2
WHERE T1.url = T2.url
GROUP BY url
)
la Table [user] contient des doublons, je travaille sous SQL 2005, mais j'ai juste le moteur de base de données, quand j'execute la requête pour affciher les doublons c'est OK, mais quand je les supprime à la main, j'ai ce message d'erreur : "la ligne mise à jour a été modifiée ou supprimée depuis la dernière extraction des données"
la requête d'affichage est : SELECT     matricule, prenom, nom, psw, Modif, Manager, JNais, MNais, User_Group, User_Population
FROM         [user]
GROUP BY matricule, prenom, nom, psw, Modif, Manager, JNais, MNais, User_Group, User_Population
HAVING      (COUNT(*) > 1)

Je n'arrive pas à supprimer en testant toutes les requêtes qui existe sur cette page ces doublons qui n'optimise pas la recherche
je vous remercie par avance

Commentaire de simodel le 09/12/2008 11:29:58

ERRATUM
Voici ma requête :
DELETE T1.ID, T1.matricule, T1.prenom, T1.nom, T1.psw, T1.Modif, T1.Manager, T1.JNais, T1.MNais, T1.User_Group, T1.User_Population
FROM [user] AS T1
WHERE ((T1.ID) Not In (SELECT min(ID)
FROM [user] T2
WHERE T1.matricule = T2.matricule
GROUP BY matricule
)

Commentaire de fab421 le 08/07/2009 13:39:12

Bonjour,

Petite remarque pour les utilisateurs de SQL-Server...

En Transact-SQL il n'est pas permis d'associer un alias à la table dans laquelle on supprime un enregistrement. On est donc obligé de passer par une solution de ce type :

delete from <table>
where <clé primaire> in
(
select T1.<clé primaire>
from <table> T1, <table> T2
where T1.<champ a comparer 1> = T2.<champ a comparer 1>
and T1.<champ a comparer 2> = T2.<champ a comparer 2>
        <etc.>
and T1.<clé primaire> > T2.<clé primaire>
)

Commentaire de ginios le 14/07/2010 14:19:41

merci mon pote cirdec14 ca m'aider becoup que soi dieu avec toi

 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 [SQL SERVEUR 2000]Suppression et contrainte integrite ! [ par jimmy69 ] &nbsp; 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 SQL Server: Suppression fichiers par rapport à une date [ par stan08 ] Bonjour,J'aimerais connaitre le moyen (s'il existe) de supprimer dans un répertoire tous les fichiers dont la date de modification (ou création) est s Suppression doublon "inversé" [ par darrino ] Bonjour, J'ai un petit problème concernant la suppression de doublon dans une table. Je m'explique par un exemple : nom id1 id2 abc [color=re probleme de connexion à une Base sql [ par japafralou ] [^^mad2]Bonjour, J'ai créer une base de donnée nommée DatabaseRoul.sdf, sous SQL server 2005 compact édition 3.5.Cette base contient entre autres,une Format régionnal datetime [ par fabienfs ] Bonjour, Je viens d'installer SQL Server 2005 Standard édition sur mon seveur Windows 2003. Les paramètres régionnaux de Windows sont bien en françai VB.Net requête SQL qui ne fonctionne pas [ par MagDix ] Bonjour à tous... J'utilise une requête SQL qui fonctionne très bien pour l'enssemble de ma bd [code=vb]"Select * from Paiements Where Prix betwe Je Veux Faire Une Update Sur Un Colone SQL??? [ par Krayz ] Bonjour, J'a_ Besoin de faire une augmention de salaire pour chaqu persone qui fais une insertion de 500 dh bien sure j'ai fais tous le travaille a l recopier ou sauvegarder une partie d'une BD sql uniquement [ par cudenetf ] Bonjour, je voudrais savoir s'il ya un moyen simple de copier une partie d'une bd sqlexpress (qques tables) d'un serveur vers l'ordinateur local (ou avantage de sql server [ par thethunder ] Bonjour, qu'elles sont les avantages de sql server 4.1 par rapport à Oracle ?


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,811 sec (3)

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