Oracle 三種分頁方法

Oracle的三層分頁指的是在進行分頁查詢時,使用三種不同的方式來實現分頁效果,分別是使用ROWNUM、使用OFFSET和FETCH、使用ROW_NUMBER() OVER()

1.使用ROWNUM

 

ROWNUM是Oracle中一個僞列,它用於表示返回的行的序號。使用ROWNUM進行分頁查詢的方法是在SELECT語句中加入WHERE子句,並在WHERE子句中指定ROWNUM的取值範圍,例如

SELECT *
FROM (
  SELECT a.*, ROWNUM r
  FROM my_table a
  WHERE ROWNUM <= 30
)
WHERE r >= 20;

使用ROWNUM進行分頁查詢的優點是簡單易懂

2.使用OFFSET和FETCH

OFFSET和FETCH是Oracle 12c引入的語法,它們可以更方便地實現分頁查詢。使用OFFSET和FETCH進行分頁查詢的方法是在SELECT語句中加入OFFSET和FETCH子句,例如:

SELECT *
FROM my_table
ORDER BY my_column
OFFSET 20 ROWS FETCH NEXT 10 ROWS ONLY;

上述查詢語句的意思是對my_table表按照my_column列進行排序,然後取出從第21條記錄開始的10條記錄作爲結果返回。使用OFFSET和FETCH進行分頁查詢的優點是簡單方便,缺點是隻有在Oracle 12c及以上版本中才能使用。

3.使用ROW_NUMBER() OVER()

ROW_NUMBER() OVER()是Oracle中一種用於計算行號的函數。使用ROW_NUMBER() OVER()進行分頁查詢的方法是在SELECT語句中加入ROW_NUMBER() OVER()函數,並在WHERE子句中指定ROW_NUMBER() OVER()的取值範圍,例如:

SELECT *
FROM (
  SELECT a.*, ROW_NUMBER() OVER (ORDER BY my_column) r
  FROM my_table a
)
WHERE r BETWEEN 21 AND 30;

上述查詢語句的意思是對my_table表按照my_column列進行排序,然後取出第21到第30條記錄作爲結果返回。使用ROW_NUMBER() OVER()進行分頁查詢的優點是靈活性高,可以實現各種不同的分頁方式,缺點是語法較爲複雜。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章