OFFSET 句と FETCH FIRST 句
OFFSET 句と FETCH FIRST 句は、結果セットの特定の開始ポイントから始まる行の指定範囲を返すために使用します。大きな結果セットから取得する行の範囲を制限できるので、データを「ページ」で区切って効率を向上させることができます。
OFFSET 句は、データを返す前にスキップする行の数を示します。OFFSET 句を SELECT ステートメントで使用しない場合、開始行は 0 になります。FETCH FIRST 句は、OFFSET 句で指定した開始ポイントから開始する返す行の数を 1 以上の符号なしの整数またはパーセンテージとして指定します。OFFSET 句と FETCH FIRST 句は両方とも SELECT ステートメントで使用します。OFFSET 句を先に指定します。
OFFSET 句と FETCH FIRST 句は、サブクエリーでサポートされていません。
OFFSET 句の形式
OFFSET の形式は次のとおりです:
[ OFFSET n {ROWS | ROW} ]
n は符号なしの整数です。結果セットで返される行数よりも n が大きい場合、何の結果も返されず、エラーメッセージも表示されません。
ROWS は ROW と同じです。
FETCH FIRST 句の形式
FETCH FIRST の形式は次のとおりです:
FETCH FIRST [ n [ PERCENT ] ] { ROWS | ROW } {ONLY | WITH TIES } ]
n は返される行の数です。n を省略した場合のデフォルト値は 1 です。
PERCENT が後に続く場合を除き、n は 1 以上の符号なし整数です。n の後に PERCENT が続く場合、値は正の小数値または符号なしの整数のいずれかです。
ROWS は ROW と同じです。
WITH TIES は、ORDER BY 句と共に使用する必要があります。
WITH TIES を使用すると、ピア行 (ORDER BY 句に基づいて区別されない行) も返されるので、FETCH カウント値で指定された数よりも多くの行を返すことができます。
例
姓、名の順でソートされた結果セットの 26 行目から情報を返します。
SELECT "従業員番号" , "姓" , "名" FROM "従業員名簿" ORDER BY "姓" , "名" OFFSET 25 ROWS
10 行のみを返すように指定します。
SELECT "従業員番号" , "姓" , "名" FROM "従業員名簿" ORDER BY "姓" , "名" OFFSET 25 ROWS FETCH FIRST 10 ROWS ONLY
10 行とそのピア行 (ORDER BY 句に基づいて区別されない行) を返します。
SELECT "従業員番号" , "姓" , "名" FROM "従業員名簿" ORDER BY "姓" , "名" OFFSET 25 ROWS FETCH FIRST 10 ROWS WITH TIES