OFFSET 和 FETCH FIRST 子句
OFFSET
和 FETCH FIRST
子句用于在结果集中返回从特定起点开始的指定范围的行。通过限制从较大结果集中检索的行数的功能,可以“逐页”浏览数据,并且提高效率。
OFFSET
子句指示在开始返回数据之前要跳过的行数。如果 OFFSET
子句未在 SELECT
语句中使用,则起始行为 0。FETCH FIRST
子句以大于或等于 1 的无符号整数或者百分比的形式指示从 OFFSET
子句中指示的起点开始要返回的行数。如果同时在 SELECT
语句中使用 OFFSET
和 FETCH FIRST
,应首先使用 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。
n
是大于或等于 1 的无符号整数,除非其后面是 PERCENT
。如果 n
后面是 PERCENT
,则值是正小数值或者是无符号整数。
ROWS
与 ROW
相同。
WITH TIES
必须与 ORDER BY
子句一起使用。
因为还会返回对等行(根据 ORDER BY
子句相互间无区别的行),所以 WITH TIES
允许返回的行数要多于在 FETCH
计数值中所指定的行数。
返回依次按 last_name
和 first_name
排序的结果集中第 26 行的信息。
SELECT emp_id, last_name, first_name FROM emp ORDER BY last_name, first_name OFFSET 25 ROWS
指定您需要只返回 10 行。
SELECT emp_id, last_name, first_name FROM emp ORDER BY last_name, first_name OFFSET 25 ROWS FETCH FIRST 10 ROWS ONLY
返回 10 行及其对等行(根据 ORDER BY
子句相互间无区别的行)。
SELECT emp_id, last_name, first_name FROM emp ORDER BY last_name, first_name OFFSET 25 ROWS FETCH FIRST 10 ROWS WITH TIES