Du kan bruge en underforespørgsel til dette som
select *
from
( select *
from emp
order by sal desc )
where ROWNUM <= 5;
Tag også et kig på emnet On ROWNUM og begrænsende resultater på Oracle/AskTom for mere information.
Opdater :For at begrænse resultatet med både nedre og øvre grænser bliver tingene lidt mere oppustede med
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;
(Kopieret fra specificeret AskTom-artikel)
Opdatering 2 :Fra og med Oracle 12c (12.1) er der en syntaks tilgængelig til at begrænse rækker eller starte ved forskydninger.
SELECT *
FROM sometable
ORDER BY name
OFFSET 20 ROWS FETCH NEXT 10 ROWS ONLY;
Se dette svar for flere eksempler. Tak til Krumia for tippet.