Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2000 connectés 

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  Delete de lignes redondantes

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Delete de lignes redondantes

n°721408
dkside01
Posté le 11-05-2004 à 08:36:49  profilanswer
 

Bonjour,
 
Une question pour les pros de SQL. Ma question est la suivante : Je dispose d'une table pour laquelle je n'ai pas de clé unique. Dans ma table j'ai des lignes identiques (doublons, triplets, ...). Y-a-t-il une requête DELETE simple pour effacer les doublons, ... et ne garder que des lignes distinctes ?
 
Merci d'avance
 
 

mood
Publicité
Posté le 11-05-2004 à 08:36:49  profilanswer
 

n°721424
schmur
Posté le 11-05-2004 à 09:16:33  profilanswer
 

fait un select distinct que tu mets dans une table temporaire, efface le contenu de ta premiere table puis recopie ta table temporaire dans l'autre.
Et enfin supprime ta table temporaire.
Il y a peut etre d'autre solution, mais celle ci est facile et elle fonctionne.
voili voilu

n°721508
dkside01
Posté le 11-05-2004 à 10:07:30  profilanswer
 

merci pour ta réponse, j'ai juste la crainte que 300 000 occurences à traiter dans ma table ce soit un peut gourmand.
Je vais voir ...

n°721529
dkside01
Posté le 11-05-2004 à 10:18:09  profilanswer
 

... d'autre part j'ai pas intérêt à me gourer, sinon je peux perdre toutes mes données...

n°721577
Thierry Ch​atel
Posté le 11-05-2004 à 10:50:01  profilanswer
 

Quelle que soit la méthode que tu utilises, tu as vraiment intérêt à exporter la table avant de te lancer !
Ca te permettra de la restaurer si ça n'a pas marché.


---------------
Info-Camargue, le portail de la Camargue
n°721874
Beegee
Posté le 11-05-2004 à 13:46:42  profilanswer
 

ouaip, tu peux faire un dump de ta table avant ;)
 
et puis :
 
create table table2 as select * from table1;
 
truncate table table 1;
 
insert into table1 (select distinct ... from table2);
 
et si tu as d'autres infos que les champs dans le distinct, tu les transmets par un update de table2 vers table1 :
 
update table1
set ...
where (clé_table1 = clé_table2 and ...);
 
Voilà, en gros ...
 
tu risques rien car tu as toujours le contenu de la table d'origine dans table2, si nécessaire.

n°721884
Vinx
Posté le 11-05-2004 à 13:51:36  profilanswer
 

Et quelque chose dans ce genre :
 
DELETE FROM TA_TABLE T1 WHERE EXISTS
(SELECT 1 FROM TA_TABLE T2 WHERE T1.id <> T2.id AND T1.clef_unique = T2.clef_unique)

n°721948
Beegee
Posté le 11-05-2004 à 14:41:24  profilanswer
 

ça marche aussi ... mais ça peut être très très long les EXISTS si la table contient beaucoup de lignes.
La solution de passer par une table temporaire peut -être plus rapide, et est surtout plus sécurisante ;)


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  Delete de lignes redondantes

 

Sujets relatifs
PHP - Permuter lignes tableau[PHP/MySQL] Nombre de lignes dans mysql_fetch_array ?
[Résolu] [C#] Effacer des lignes de textes dans un fichier[C++] supprimer des lignes dans un fichier pour gagner du temps
[SQL] Supprimer les lignes 'inutiles' dans mon résultat...Est-ce normal d'avoir 200 lignes de code pour en afficher 4 ?
[Perl] regrouper des lignes différentes en une seule ttes les n lignes[MySQL] comment faire : DELETE FROM table1,table2 WHERE id=2 [résolu]
Limiter le nombre de lignes comptées par COUNT(*) [maj : ça marche !]Comptage de lignes de code C ou Java sous Windows
Plus de sujets relatifs à : Delete de lignes redondantes


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR