FETCH

Oracle 12c 以上版本提供支援,用來限制查詢回傳的資料列數,實作分頁功能,對應 MySQL 的 LIMIT

完整語法

[ OFFSET offset ROWS ]
FETCH NEXT [ row_count | percent PERCENT ] ROWS [ ONLY | WITH TIES ]Code language: CSS (css)
1. OFFSET 子句(選填)

作用:跳過前面 N 筆資料,主要用於分頁。

  • 省略時偏移量等於 0,從第一列開始讀取資料
  • 偏移量為負數:視為 0 處理
  • 偏移量是NULL或是大於總資料列數:不會回傳任何資料
  • 偏移量帶有小數:直接捨去小數部分,只保留整數
2. FETCH 子句

作用:指定要回傳多少筆資料,支援按列數、百分比兩種模式。

  • ONLY:只取指定數量的資料(最常使用)
  • WITH TIES:會把和最後一筆排序欄位值相同的資料一併取出,必須搭配ORDER BY使用

範例程式碼

直接取出前5筆,依照 name 欄位遞減排序
SELECT *
FROM student
ORDER BY name DESC
FETCH NEXT 5 ROWS ONLY;
取出前2筆資料
select * from student fetch next 2 rows only;Code language: JavaScript (javascript)

輸出結果:回傳表格前兩筆紀錄 jimlisa

分頁範例:跳過3列,讀取4列(第2頁,每頁4筆)
SELECT *
FROM student
ORDER BY id
OFFSET 3 ROWS
FETCH NEXT 4 ROWS ONLY;
依照百分比回傳,取全部資料的10%
SELECT *
FROM student
FETCH NEXT 10 PERCENT ROWS ONLY;
WITH TIES 用法(包含並列資料)
SELECT *
FROM student
ORDER BY score DESC
FETCH NEXT 3 ROWS WITH TIES;

如果第三名有多筆分數相同的資料,會全部撈出來,實際回傳筆數可能大於3。

FETCH

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *