Chỉ có một cách khá phức tạp để làm điều này, đó là một nỗi đau thực sự với Oracle. Họ chỉ nên triển khai điều khoản LIMIT / OFFSET ...
Rownum được chỉ định sau hàng đã được chọn bởi mệnh đề where, do đó rownum phải luôn bắt đầu bằng 1. where rownum > x
sẽ luôn luôn đánh giá thành false.
Ngoài ra, rownum được chỉ định trước khi hoàn tất việc phân loại , do đó, rownum sẽ không theo thứ tự như đơn đặt hàng của bạn.
Bạn có thể giải quyết cả hai vấn đề với một lựa chọn phụ:
select a,b,c, rn from
( select a,b,c, rownum rn from
( select a,b,c from the_table where x = ? order by c)
where rownum < Y)
where rn > X
Nếu bạn không cần sắp xếp (nhưng chỉ sau đó), bạn có thể đơn giản hóa thành
select a,b,c, rn from
( select a,b,c, rownum rn from the_table where rownum < Y )
where rn > X