Bạn có thể sử dụng một truy vấn con cho điều này như
select *
from
( select *
from emp
order by sal desc )
where ROWNUM <= 5;
Ngoài ra, hãy xem chủ đề Về ROWNUM và giới hạn kết quả tại Oracle / AskTom để biết thêm thông tin.
Cập nhật :Để giới hạn kết quả với cả giới hạn thấp hơn và giới hạn trên, mọi thứ trở nên cồng kềnh hơn một chút với
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;
(Được sao chép từ AskTom-article được chỉ định)
Cập nhật 2 :Bắt đầu với Oracle 12c (12.1), có sẵn một cú pháp để giới hạn các hàng hoặc bắt đầu ở các khoảng lệch.
SELECT *
FROM sometable
ORDER BY name
OFFSET 20 ROWS FETCH NEXT 10 ROWS ONLY;
Xem câu trả lời này để biết thêm ví dụ. Cảm ơn Krumia về gợi ý.