📜  SQL | OFFSET-FETCH 子句

📅  最后修改于: 2022-05-13 01:54:19.504000             🧑  作者: Mango

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;

    输出:

要点:

  1. OFFSET 子句对于 FETCH 是强制性的。您永远不能使用 ORDER BY ... FETCH。
  2. TOP 不能与 OFFSET 和 FETCH 组合。
  3. OFFSET/FETCH 行计数表达式只能是任何算术、常量或将返回整数值的参数表达式。
  4. ORDER BY 必须与 OFFSET 和 FETCH 子句一起使用。
  5. OFFSET 值必须大于或等于零。它不能为负数,否则返回错误。