從Oracle 12c R1(12.1)開始,是?a?行限制子句。它不使用熟悉的LIMIT
語法,但是它可以通過更多的選項來更好地完成工作。
要回答最初的問題,下面是一個查詢:
SELECT?*?FROM???sometableORDER?BY?name
OFFSET?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;
桌子里有什么?
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
TH行有領(lǐng)帶,把所有系好的行
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?val
OFFSET?4?ROWS?FETCH?NEXT?4?ROWS?ONLY;
???????VAL----------
?????????3
?????????3
?????????4
?????????44?rows?selected.
您可以將偏移量與百分比結(jié)合起來。
SELECT?valFROM???rownum_order_testORDER?BY?val
OFFSET?4?ROWS?FETCH?NEXT?20?PERCENT?ROWS?ONLY;
???????VAL----------
?????????3
?????????3
?????????4
?????????4
?????????4?rows?selected.