Supprimer les doublons d'une base ?

Supprimer les doublons d'une base ? - SQL/NoSQL - Programmation

Marsh Posté le 30-04-2003 à 10:56:08    

Bonjour,  
 
J'aimerais savoir s'il existe un moyen plus ou moins simple d'effacer les doublons d'une base MySQL ?


---------------
Mon comparateur de prix préféré (le miens !):www.infomoinscher.net
Reply

Marsh Posté le 30-04-2003 à 10:56:08   

Reply

Marsh Posté le 30-04-2003 à 10:59:39    

molosse a écrit :

Bonjour,  
 
J'aimerais savoir s'il existe un moyen plus ou moins simple d'effacer les doublons d'une base MySQL ?


et bien comme ça, je dirais qu'il faudrait exécuter une requête select * from xxx, puis comparer chaque résultat dans une boucle for à tous les résultats de cette même requête sous un autre nom !
 
C'est pt pas très clair, mais le principe est là :D


Message édité par nero27 le 30-04-2003 à 10:59:59
Reply

Marsh Posté le 30-04-2003 à 11:04:47    

Peut être un truc genre
Delete from (
   Select distinct * from TATABLE
};


Message édité par El_gringo le 30-04-2003 à 11:05:20
Reply

Marsh Posté le 30-04-2003 à 11:05:38    

El_gringo a écrit :

Peut être un truc genre
Delete from (
   Select distinct * from TATABLE
};


ah oui, c'est vrai, y'a de l'idée :)

Reply

Marsh Posté le 30-04-2003 à 11:07:08    

faudrait faire le contraire en fait


---------------
.: Clône de Drasche .:. Ebichuleys .:. Avec l'Aloe Vera je fais de beaux cacas [:dawa] .: www.oserselancer.com :.
Reply

Marsh Posté le 30-04-2003 à 11:12:57    

Une base de données par définition c'est pas sensé ne pas contenir de doublons justement?

Reply

Marsh Posté le 30-04-2003 à 11:14:58    

nero27 a écrit :


ah oui, c'est vrai, y'a de l'idée :)


 
Ouais, sauf que ça serait plus
Delete from TATABLE where (
  Select distinct * from TATABLE
};
 
en fait.

Reply

Marsh Posté le 30-04-2003 à 11:20:42    

El_gringo a écrit :


 
Ouais, sauf que ça serait plus
Delete from TATABLE where (
  Select distinct * from TATABLE
};
 
en fait.


C'est vrai que ça m'a l'air plus correct (j'avais complètement oublié "distinct" :D)

Reply

Marsh Posté le 30-04-2003 à 11:25:07    

El_gringo a écrit :


 
Ouais, sauf que ça serait plus
Delete from TATABLE where (
  Select distinct * from TATABLE
};
 
en fait.


 
Euhh Ca ca va me laisser un exemplaire unique de tous ceux qui etaient en doublons, mais ca va m'effacer aussi ceux qui n'avaient pas de doublons non ?


---------------
Mon comparateur de prix préféré (le miens !):www.infomoinscher.net
Reply

Marsh Posté le 30-04-2003 à 11:26:49    

molosse a écrit :


 
Euhh Ca ca va me laisser un exemplaire unique de tous ceux qui etaient en doublons, mais ca va m'effacer aussi ceux qui n'avaient pas de doublons non ?


yesh


---------------
.: Clône de Drasche .:. Ebichuleys .:. Avec l'Aloe Vera je fais de beaux cacas [:dawa] .: www.oserselancer.com :.
Reply

Marsh Posté le 30-04-2003 à 11:26:49   

Reply

Marsh Posté le 30-04-2003 à 11:26:56    

molosse a écrit :


 
Euhh Ca ca va me laisser un exemplaire unique de tous ceux qui etaient en doublons, mais ca va m'effacer aussi ceux qui n'avaient pas de doublons non ?


 
Si ! :D

Reply

Marsh Posté le 30-04-2003 à 11:30:59    

Mais comme ça :
DELETE FROM Tatable WHERE (
   SELECT DISTINCT * FROM Tatable
   INTERSECT
   SELECT * FROM Tatable;
)
ça roule (j'pense :D)
 
PS:Essaye d'abbord de faier un :
   SELECT DISTINCT * FROM Tatable
   INTERSECT
   SELECT * FROM Tatable;
histoire de voir ce que ça te sort.

Reply

Marsh Posté le 30-04-2003 à 11:31:14    

PAs de solutions ?


---------------
Mon comparateur de prix préféré (le miens !):www.infomoinscher.net
Reply

Marsh Posté le 30-04-2003 à 11:31:45    

Bien pensé el gringo .. j'essaye ca ce soir ..


---------------
Mon comparateur de prix préféré (le miens !):www.infomoinscher.net
Reply

Marsh Posté le 30-04-2003 à 11:32:20    

Ha non :D
Mais on s'rapproche !

Reply

Marsh Posté le 30-04-2003 à 11:32:45    

Euhh non a bien y reflechir ca va faire pareil (le select distinct est inclu dans le select simple, d'ou l'intersection=select distinct : la meme merde ..)
 
 :D


Message édité par molosse le 30-04-2003 à 11:33:06

---------------
Mon comparateur de prix préféré (le miens !):www.infomoinscher.net
Reply

Marsh Posté le 30-04-2003 à 11:33:40    

On peu faire des Moins ?


---------------
Mon comparateur de prix préféré (le miens !):www.infomoinscher.net
Reply

Marsh Posté le 30-04-2003 à 11:34:15    

faut faire
DELETE
  select *
  intersect
  select distinct


---------------
.: Clône de Drasche .:. Ebichuleys .:. Avec l'Aloe Vera je fais de beaux cacas [:dawa] .: www.oserselancer.com :.
Reply

Marsh Posté le 30-04-2003 à 11:37:54    

Urd-sama a écrit :

faut faire
DELETE
  select *
  intersect
  select distinct


 
c exactement la même chose que j'ai fait (une intersection c'est... je sais plus le mot, mais c'est pareil dans un sens ou dans l'autre !)

Reply

Marsh Posté le 30-04-2003 à 11:38:28    

on est cons, c'est MINUS qu'il faut utiliser


---------------
.: Clône de Drasche .:. Ebichuleys .:. Avec l'Aloe Vera je fais de beaux cacas [:dawa] .: www.oserselancer.com :.
Reply

Marsh Posté le 30-04-2003 à 11:42:53    

Ouaip .. minus a l'air d'etre OK ...  :jap:  
 
Merci les gars !!


---------------
Mon comparateur de prix préféré (le miens !):www.infomoinscher.net
Reply

Marsh Posté le 30-04-2003 à 11:43:00    

....Vooooila. J'étais sure qu'il y avait un truc pour faire ça.

Reply

Marsh Posté le 30-04-2003 à 11:44:05    

rien de tel qu'une présentation en patate sur le papier pour s'y retrouver  :D


---------------
.: Clône de Drasche .:. Ebichuleys .:. Avec l'Aloe Vera je fais de beaux cacas [:dawa] .: www.oserselancer.com :.
Reply

Marsh Posté le 30-04-2003 à 11:45:40    

Urd-sama a écrit :

rien de tel qu'une présentation en patate sur le papier pour s'y retrouver  :D  


jolie métaphore :)

Reply

Marsh Posté le 30-04-2003 à 11:46:33    

nero27 a écrit :


jolie métaphore :)


mais non, ca a un nom mathématique ces trucs
les "ensembles" machin-chose là


---------------
.: Clône de Drasche .:. Ebichuleys .:. Avec l'Aloe Vera je fais de beaux cacas [:dawa] .: www.oserselancer.com :.
Reply

Marsh Posté le 30-04-2003 à 11:47:57    

Et dire que je finis ma thèse en mathématiques pures en ce moment  :D


---------------
Mon comparateur de prix préféré (le miens !):www.infomoinscher.net
Reply

Marsh Posté le 30-04-2003 à 11:50:03    

molosse a écrit :

Et dire que je finis ma thèse en mathématiques pures en ce moment  :D  


petit joueur...
 
 
 
 
... [:dehors2]

Reply

Marsh Posté le 30-04-2003 à 11:50:06    

Urd-sama a écrit :


mais non, ca a un nom mathématique ces trucs
les "ensembles" machin-chose là


 
les ensembles tout court j'crois !

Reply

Marsh Posté le 30-04-2003 à 11:51:37    

theorie des ensembles oui ...


---------------
Mon comparateur de prix préféré (le miens !):www.infomoinscher.net
Reply

Marsh Posté le 30-04-2003 à 12:00:31    

Euhh la syntaxe exacte c'est quoi ?
 
SELECT * FROM ((select * from base) minus (select distinct * from base))


---------------
Mon comparateur de prix préféré (le miens !):www.infomoinscher.net
Reply

Marsh Posté le 30-04-2003 à 12:01:25    

((select * from base) minus (select distinct * from base))  
 tout court pour l'instant


---------------
.: Clône de Drasche .:. Ebichuleys .:. Avec l'Aloe Vera je fais de beaux cacas [:dawa] .: www.oserselancer.com :.
Reply

Marsh Posté le 30-04-2003 à 12:04:09    

Il me dit 'erreur de syntaxe near ...'


---------------
Mon comparateur de prix préféré (le miens !):www.infomoinscher.net
Reply

Marsh Posté le 30-04-2003 à 12:05:04    

mysql ne supporte peut-etre pas MINUS, ou alors c'est un autre mot


---------------
.: Clône de Drasche .:. Ebichuleys .:. Avec l'Aloe Vera je fais de beaux cacas [:dawa] .: www.oserselancer.com :.
Reply

Marsh Posté le 30-04-2003 à 12:37:04    

Urd-sama a écrit :

mysql ne supporte peut-etre pas MINUS, ou alors c'est un autre mot  


 
MySQL ne reconnait pas les requetes imbriquées alors pour le MINUS, tu peux oublier.  
 
Utilise des clés primaires pour eviter les doublons ou un vrai SGBD.


---------------
"Dieu a exploité tous nos complexes d'infériorité, en commençant par notre incapacité de croire à notre propre divinité." - Emil Michel Cioran
Reply

Marsh Posté le 30-04-2003 à 12:56:18    

solution brutale :  
createdb manewdbpasredondante
createtable toutes tes tables puis pour chacune :
select distinct * from tatable;
 
puis insert de chaque résultat dans ta nouvelle DB.
 
solution moins bourrin, utilise un vrai SGBDR, revois ta conception des tables (à part dans certains cas précis, avoir des doublons c avoir une mauvaise conception), ou bien encore, passe à une version de MySQL vraiment relationelle (utilisant innoDB et requêtes imbriquées).
 

Reply

Marsh Posté le 30-04-2003 à 13:05:56    

Ok c'est encore le mieux.
 
Merci à vous tous !


---------------
Mon comparateur de prix préféré (le miens !):www.infomoinscher.net
Reply

Marsh Posté le 05-07-2012 à 14:39:54    

Le blog suivant donne une solution basée sur la commande mySQL Alter Ignore :
http://blogmotion.fr/programmation [...] ssion-1588

Reply

Marsh Posté le 06-07-2012 à 08:23:34    

En 9 ans, 2 mois et 5 jours, je crois qu'il aura trouvé une solution...

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed