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、1行目からデータを取得します
- オフセットが負数の場合:0として扱われます
- オフセットが
NULLまたは総行数を超える場合:1行も返却されません - オフセットに小数が含まれる場合:小数部は切り捨て、整数部分のみ使用されます
2. FETCH句
役割:返却する行数を指定、件数指定とパーセント指定の2種類に対応。
ONLY:指定した行数だけ取得(最もよく使われる)WITH TIES:最後の行と並び順の値が同じレコードをまとめて取得。ORDER BYと組み合わせて使用する必要があります
サンプルコード
nameを降順にし先頭5件を取得
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)
実行結果:テーブルの先頭2件 jim、lisa が返却されます。
ページング:3行スキップ、4行読み込み(2ページ目、1ページ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位と同じ点数のレコードが複数存在する場合、該当するすべての行が取得され、結果件数が3件を超える可能性があります。
FETCH
Previous: WHERE 条件検索