Delete de lignes redondantes - SQL/NoSQL - Programmation
Marsh Posté le 11-05-2004 à 09:16:33
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
Marsh Posté le 11-05-2004 à 10:07:30
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 ...
Marsh Posté le 11-05-2004 à 10:18:09
... d'autre part j'ai pas intérêt à me gourer, sinon je peux perdre toutes mes données...
Marsh Posté le 11-05-2004 à 10:50:01
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é.
Marsh Posté le 11-05-2004 à 13:46:42
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.
Marsh Posté le 11-05-2004 à 13:51:36
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)
Marsh Posté le 11-05-2004 à 14:41:24
ç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
Marsh Posté le 11-05-2004 à 08:36:49
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