Bonjour
J'ai une table avec 3 champs : id1(Number), id2(Number) et score(Number).
Pour un id1 donné, je voudrais garder uniquement les 5 lignes ayant le score le plus élevé, donc supprimer toutes les autres.
En théorie c'est tout bête, mais maintenant faut pondre la requête qui le fait et ça devient plus compliqué...
Je pense qu'il faut partir sur une requete utilisant une clause any comme cette requête que SQLPro a écrit pour supprimer les doublons d'une table :
Mais je ne vois pas vraiment comment faire... Quelqu'un se serait-il déjà penché sur la problématique ? Auriez-vous une idée sur la façon de procéder ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 DELETE FROM Table t1 WHERE t1.id1 < ANY ( SELECT t2.id1 FROM Table t2 WHERE t2.id1 <> t1.id1 AND t2.champ = t1.champ );
Merci à vous
David
Edit : je suis sous Oracle 10gR2
Partager