REQUETE SUPPRESSION DE DOUBLON

cs_bir Messages postés 9 Date d'inscription lundi 23 juin 2003 Statut Membre Dernière intervention 15 mars 2009 - 25 juin 2007 à 13:21
 2016 - 19 juin 2016 à 15:31
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/43198-requete-suppression-de-doublon

cs_bir Messages postés 9 Date d'inscription lundi 23 juin 2003 Statut Membre Dernière intervention 15 mars 2009
25 juin 2007 à 13:21
bjr est ce DISTINCT ne ferai pas l'affaire.
cs_LordBob Messages postés 2865 Date d'inscription samedi 2 novembre 2002 Statut Membre Dernière intervention 11 mai 2009 9
25 juin 2007 à 22:20
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!
epopoi27 Messages postés 2 Date d'inscription jeudi 6 janvier 2005 Statut Membre Dernière intervention 10 novembre 2007
10 nov. 2007 à 16:18
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
maxroucool Messages postés 44 Date d'inscription jeudi 20 novembre 2003 Statut Membre Dernière intervention 28 janvier 2013
3 oct. 2008 à 15:09
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!
+++
cirdec14 Messages postés 3 Date d'inscription vendredi 21 mars 2008 Statut Membre Dernière intervention 23 octobre 2012
13 nov. 2008 à 01:14
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
)));
Rejoignez-nous