📜  SQL | OFFSET-FETCH 子句(1)

📅  最后修改于: 2023-12-03 15:20:15.970000             🧑  作者: Mango

SQL | OFFSET-FETCH 子句

在SQL中,OFFSET-FETCH子句可以用来限制查询结果返回的行数和范围。它通常与SELECT语句一起使用。

语法
SELECT column1, column2, ...
FROM table
ORDER BY column1 [ASC|DESC], column2 [ASC|DESC], ...
OFFSET offset_value ROWS
FETCH { FIRST|NEXT } fetch_value ROWS ONLY;

其中,offset_value表示要跳过的行数,fetch_value表示要返回的行数。

示例

假设有一个名为students的表,它包含以下列:idnameagegender。我们可以使用OFFSET-FETCH子句来查询前5个学生的信息:

SELECT id, name, age, gender
FROM students
ORDER BY id
OFFSET 0 ROWS
FETCH FIRST 5 ROWS ONLY;

以上SQL语句会从students表中获取前5行数据,并按id列进行升序排序。

如果我们要查找第6到第10个学生的信息,可以改为:

SELECT id, name, age, gender
FROM students
ORDER BY id
OFFSET 5 ROWS
FETCH NEXT 5 ROWS ONLY;

当我们不需要排序时,可以省略ORDER BY子句,这样查询速度会更快:

SELECT id, name, age, gender
FROM students
OFFSET 5 ROWS
FETCH NEXT 5 ROWS ONLY;
注意事项
  • OFFSET-FETCH子句在SQL Server 2012及以上版本中可用。
  • OFFSET和FETCH子句必须紧随在ORDER BY子句之后。
  • OFFSET和FETCH子句的值必须是非负整数。
  • FETCH子句中的FIRSTNEXT关键字是等效的,可以互换使用。
  • 如果结果集中的行数不足fetch_value,则返回结果集中的所有行。