cs_bir
Messages postés9Date d'inscriptionlundi 23 juin 2003StatutMembreDernière intervention15 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.
cs_bir
Messages postés9Date d'inscriptionlundi 23 juin 2003StatutMembreDernière intervention15 mars 2009 25 juin 2007 à 13:21
bjr est ce DISTINCT ne ferai pas l'affaire.
cs_LordBob
Messages postés2865Date d'inscriptionsamedi 2 novembre 2002StatutMembreDernière intervention11 mai 20099 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és2Date d'inscriptionjeudi 6 janvier 2005StatutMembreDernière intervention10 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és44Date d'inscriptionjeudi 20 novembre 2003StatutMembreDernière intervention28 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és3Date d'inscriptionvendredi 21 mars 2008StatutMembreDernière intervention23 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
)));
25 juin 2007 à 13:21
25 juin 2007 à 22:20
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!
10 nov. 2007 à 16:18
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
3 oct. 2008 à 15:09
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!
+++
13 nov. 2008 à 01:14
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
)));