このようにサブクエリを使用できます
select *
from
( select *
from emp
order by sal desc )
where ROWNUM <= 5;
詳細については、Oracle/AskTomのトピック「ROWNUMと制限結果」も参照してください。
更新 :結果を下限と上限の両方で制限するには、物事が少し肥大化します
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;
(指定されたAskTom-articleからコピー)
アップデート2 :Oracle 12c(12.1)以降、行を制限したり、オフセットから開始したりするために使用できる構文があります。
SELECT *
FROM sometable
ORDER BY name
OFFSET 20 ROWS FETCH NEXT 10 ROWS ONLY;
その他の例については、この回答を参照してください。ヒントをくれたKrumiaに感謝します。