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