Sql简介 专题
专题目录
您的位置:database > Sql简介专题 > SQL Fetch语句
SQL Fetch语句
作者:--    发布时间:2019-11-20

在本教程中,我们来学习如何使用sql fetch子句来限制查询返回的行数。

1. sql fetch子句简介

要限制查询返回的行数,请使用limit子句。 limit子句得到了许多数据库系统的广泛支持,例如mysql,h2和hsqldb。 但是,limit子句不是sql标准子句。

sql:2008 引入了offset fetch子句,它具有与limit子句类似的功能。 offset fetch子句用于在开始返回任何行之前跳过结果集中的前n行。

以下显示了sqlfetch子句的语法:

offset offset_rows { row | rows }
fetch { first | next } [ fetch_rows ] { row | rows } only

在上面语法中,

  • rowrowsfirstnext是同义词,因此,可以互换使用它们。
  • offset_rows是一个整数,必须为零或正数。 如果offset_rows大于结果集中的行数,则不会返回任何行。
  • fetch_rows也是一个整数,用于确定要返回的行数。 fetch_rows的值等于或大于1

由于行以不可预测的顺序存储在表中,因此应始终将fetch子句与order by子句一起使用以获得一致的输出。

许多数据库系统都支持offset fetch子句,包括oracle database 12c +postgresql 10+microsoft sql server 2012+ 。 但是,每个数据库系统都会以不同的方式实现offset fetch子句。

offset fetch子句通常用于需要分页的客户端或web应用程序。 例如,如果每个页面有十行,要获取第二页的行,可以跳过前10行并返回接下来的10行。

2. sql fetch示例

我们将使用示例数据库中的employees表进行演示。

以下语句返回薪水最高的员工信息:

select 
    employee_id, 
    first_name, 
    last_name, 
    salary
from employees
order by 
    salary desc
offset 0 rows
fetch next 1 rows only;

在此示例中,首先,order by子句按薪水从高到低对员工进行排序。 offset子句跳过0行,fetch子句返回第一行。

以下语句按薪水对员工进行排序,跳过前五名薪水最高的员工,然后取出接下来的五名员工。

select 
    employee_id, 
    first_name, 
    last_name, 
    salary
from employees
order by 
    salary desc
offset 5 rows
fetch next 5 rows only;

在本教程中,您已学习如何在开始返回任何行之前使用sql fetch子句跳过结果集中的n行。


网站声明:
本站部分内容来自网络,如您发现本站内容
侵害到您的利益,请联系本站管理员处理。
联系站长
373515719@qq.com
关于本站:
编程参考手册