194 votes

Oracle SELECT TOP 10 enregistrements

J'ai un gros problème avec une déclaration SQL dans Oracle. Je veux sélectionner les 10 premiers enregistrements classés par STORAGE_DB qui ne sont pas dans une liste d'une autre instruction select.

Celui-ci fonctionne bien pour tous les enregistrements :

SELECT DISTINCT 
  APP_ID, 
  NAME, 
  STORAGE_GB, 
  HISTORY_CREATED, 
  TO_CHAR(HISTORY_DATE, 'DD.MM.YYYY') AS HISTORY_DATE  
  FROM HISTORY WHERE 
      STORAGE_GB IS NOT NULL AND 
        APP_ID NOT IN (SELECT APP_ID
                       FROM HISTORY
                        WHERE TO_CHAR(HISTORY_DATE, 'DD.MM.YYYY') = '06.02.2009') 

Mais quand j'ajoute

AND ROWNUM <= 10
ORDER BY STORAGE_GB DESC

Je reçois une sorte d'enregistrement "aléatoire". Je pense que c'est parce que la limite se met en place avant l'ordre.

Quelqu'un a-t-il une bonne solution ? L'autre problème : cette requête est très lente (plus de 10 000 enregistrements).

0 votes

-2voto

Rakesh Bollu Points 1

Vous pouvez utiliser cette requête pour sélectionner les meilleurs enregistrements dans oracle. Rakesh B

select * from User_info where id >= (select max(id)-10 from User_info) ;

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X