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 / Exemple :
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.
19 juin 2016 à 15:31
14 juil. 2010 à 14:19
8 juil. 2009 à 13:39
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>
)
9 déc. 2008 à 11:29
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
)
9 déc. 2008 à 11:24
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
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.