Oracle
 sql >> Base de données >  >> RDS >> Oracle

Comment limiter le nombre de lignes renvoyées par une requête Oracle après la commande ?

Vous pouvez utiliser une sous-requête pour cela comme

select *
from  
( select * 
  from emp 
  order by sal desc ) 
where ROWNUM <= 5;

Consultez également le sujet Sur ROWNUM et la limitation des résultats sur Oracle/AskTom pour plus d'informations.

Mettre à jour  :Pour limiter le résultat avec des limites inférieures et supérieures, les choses deviennent un peu plus gonflées avec

select * from 
( select a.*, ROWNUM rnum from 
  ( <your_query_goes_here, with order by> ) a 
  where ROWNUM <= :MAX_ROW_TO_FETCH )
where rnum  >= :MIN_ROW_TO_FETCH;

(Copié de l'article AskTom spécifié)

Mise à jour 2 :À partir d'Oracle 12c (12.1), une syntaxe est disponible pour limiter les lignes ou commencer aux décalages.

SELECT * 
FROM   sometable
ORDER BY name
OFFSET 20 ROWS FETCH NEXT 10 ROWS ONLY;

Voir cette réponse pour plus d'exemples. Merci à Krumia pour l'indice.