从Oracle 12C R1(12.1)开始,那里是一个行限制性条款。它不使用熟悉的
LIMIT语法,但是可以通过更多选项更好地完成这项工作。您可以在此处找到完整的语法。(还可以在此答案中阅读有关Oracle内部如何工作的更多信息)。
要回答原始问题,以下是查询:
SELECt * FROM sometableORDER BY nameOFFSET 20 ROWS FETCH NEXT 10 ROWS ONLY;
设置
CREATE TABLE rownum_order_test ( val NUMBER);INSERT ALL INTO rownum_order_testSELECt levelFROM dualConNECT BY level <= 10;COMMIT;
table上有什么?
SELECt valFROM rownum_order_testORDER BY val; VAL---------- 1 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 9 9 10 1020 rows selected.
获取第一N行
SELECT valFROM rownum_order_testORDER BY val DESCFETCH FIRST 5 ROWS ONLY; VAL---------- 10 10 9 9 85 rows selected.
获得第一
N行中,如果
N日行有关系,让所有的束缚行
SELECT valFROM rownum_order_testORDER BY val DESCFETCH FIRST 5 ROWS WITH TIES; VAL---------- 10 10 9 9 8 86 rows selected.
x行的前%
SELECT valFROM rownum_order_testORDER BY valFETCH FIRST 20 PERCENT ROWS ONLY; VAL---------- 1 1 2 24 rows selected.
使用偏移量,对分页非常有用
SELECT valFROM rownum_order_testORDER BY valOFFSET 4 ROWS FETCH NEXT 4 ROWS ONLY; VAL---------- 3 3 4 44 rows selected.
您可以将偏移量与百分比结合起来
SELECT valFROM rownum_order_testORDER BY valOFFSET 4 ROWS FETCH NEXT 20 PERCENT ROWS ONLY; VAL---------- 3 3 4 44 rows selected.



