SQL | OFFSET-FETCH 子句
OFFSET 和 FETCH 子句与 SELECT 和 ORDER BY 子句一起使用,以提供检索一系列记录的方法。
抵消
OFFSET 参数用于标识从结果集中返回行的起点。基本上,它排除了第一组记录。
笔记:
- OFFSET 只能与 ORDER BY 子句一起使用。它不能单独使用。
- OFFSET 值必须大于或等于零。它不能为负数,否则返回错误。
句法:
SELECT column_name(s)
FROM table_name
WHERE condition
ORDER BY column_name
OFFSET rows_to_skip ROWS;
例子:
考虑以下 Employee 表,
- 打印除工资最低的员工之外的所有员工的Fname、Lname。
SELECT Fname, Lname FROM Employee ORDER BY Salary OFFSET 1 ROWS;
输出:
拿来
FETCH 参数用于返回一组行数。 FETCH 不能单独使用,它与 OFFSET 配合使用。
句法:
SELECT column_name(s)
FROM table_name
ORDER BY column_name
OFFSET rows_to_skip
FETCH NEXT number_of_rows ROWS ONLY;
例子:
- 根据 Salary 排序时,打印 Employee 表的第 3 到第 6 个元组中的 Fname、Lname。
SELECT Fname, Lname FROM Employee ORDER BY Salary OFFSET 2 ROWS FETCH NEXT 4 ROWS ONLY;
输出:
- 按 Salary 排序时打印 Employee 表的底部 2 个元组。
SELECT Fname, Lname FROM Employee ORDER BY Salary OFFSET (SELECT COUNT(*) FROM EMPLOYEE) - 2 ROWS FETCH NEXT 2 ROWS;
输出:
要点:
- OFFSET 子句对于 FETCH 是强制性的。您永远不能使用 ORDER BY ... FETCH。
- TOP 不能与 OFFSET 和 FETCH 组合。
- OFFSET/FETCH 行计数表达式只能是任何算术、常量或将返回整数值的参数表达式。
- ORDER BY 必须与 OFFSET 和 FETCH 子句一起使用。
- OFFSET 值必须大于或等于零。它不能为负数,否则返回错误。