Bonjour, j'ai une table qui contient des doublons, j'aimerai supprimer les doublons en gardant le Id le plus petit, voici un exemple
je veux garder seulement ID = 20,
NB : ça c'est à titre d'exemple il y a centaine de ligne en doublon
Merci
Bonjour, j'ai une table qui contient des doublons, j'aimerai supprimer les doublons en gardant le Id le plus petit, voici un exemple
je veux garder seulement ID = 20,
NB : ça c'est à titre d'exemple il y a centaine de ligne en doublon
Merci
Bonjour,
Tu peux utiliser une jointure dans la requête de suppression :
Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 delete t1 from MaTable t1 inner join MaTable t2 on (les critères pour trouver les doublons) and t1.id > t2.id
Tatayo.
Merci de me répondre,
j'utilise TOAD 15 pour lancer le script mais on dirait qu'il indique une erreur sur FROM
si j'insiste pour le lancer voici l'erreur
ORA-00933: la commande SQL ne se termine pas correctement
Visiblement Oracle n'aime pas les jointures avec un DELETE.
Dans ce cas un EXIST fera l'affaire:
Ou avec un IJ:
Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 delete from Matable t1 where exists ( select 1 from MaTable t2 on (les critères pour trouver les doublons) and t1.id > t2.id )
Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 delete from Matable t1 where t1.id in ( select t1.id from MaTable t2 on (les critères pour trouver les doublons) and t1.id > t2.id )
Tatayo.
bonjour,
j'ai essayé les deux mais il y a une erreur sur ON
Non mais....
Il y a une coquille dans la requête proposée par Tatayo (remplacer ON par WHERE)
il ne faut pas coder :
Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 delete from Matable T1 where exists (select 1 from MaTable T2 on (les critères pour trouver les doublons) and T1.id > T2.id )
Mais :
Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 delete from Matable T1 where exists (select 1 from MaTable T2 where (les critères pour trouver les doublons) and T1.id > T2.id )
Par exemple :
Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 delete from Matable T1 where exists (select 1 from MaTable T2 where T2.COL_B=T1.COL_B and T2.COL_C=T1.COL_C and T1.id > T2.id )
Les critères qui permettent de déterminer les doublons sont à adapter à vos besoins.
Partager