SQL Fetch

当我们在SQL数据库中工作时,我们可能会遇到需要从给定表中获取特定行子集的实例。这允许我们限制从表中获取值所需的资源。

幸运的是,在SQL中,我们可以访问LIMIT子句,它允许我们控制给定结果集中返回的行数。当我们处理一个大数据集时,这个特性非常有用,并且实际上不需要整行,而是它的一个子集。这可以是为了获得数据的布局或表示。

但是,您知道LIMIT不是标准SQL定义的一部分吗?尽管它被大多数数据库广泛采用,但它并不是SQL标准的一部分。该部分由FETCH子句获取。

在本教程中,我们将学习如何在SQL数据库中使用FETCH子句来指定我们希望从数据库检索的行数。

SQL FETCH子句

在SQL:2008中,引入了OFFSET FETCH子句,它的功能类似于LIMIT子句。

使用OFFSET FETCH子句,您可以在开始检索任何行之前跳过结果集中的初始N行。

语法如下:

OFFSET offset_rows {ROW | ROWS}

只获取{FIRST | NEXT} [fetch_rows] {ROW | ROWS}

 

在给定的语法中:

  1. ROW和ROWS/FIRST和NEXT作为同义词,允许互换使用。
  2. OFFSET_ROWS表示一个整数,该整数必须为零或正值。如果" offset_row "超过结果集中的总行数,则查询不返回任何行。
  3. FETCH_ROWS指定一个整数,表示要检索的行数,其值为1或更大。

注意:OFFSET FETCH子句被各种数据库引擎支持,如Oracle, PostgreSQL, Microsoft SQL Server等。然而,值得注意的是,这些数据库引擎中的每一个都以一些变化实现了OFFSET FETCH子句。

例子:

让我们设置一个基本的表,它可以帮助我们演示如何使用OFFSET FETCH子句。“create”和“insert”语句如下:

创建表employees

INT AUTO_INCREMENT主键,

first_name VARCHAR (50),

last_name VARCHAR (50),

部门VARCHAR (50)

);

INSERT INTO employees (first_name, last_name, department) VALUES

(《爱丽丝》《史密斯》《人力资源》),

(“鲍勃”、“约翰逊”、“市场部”),

(《查理》、《威尔逊》、《金融》),

(“David”,“Brown”,“Sales”),

('Eva', 'Davis', 'Engineering');

 

一旦我们建立了表,我们就可以继续学习如何使用这个子句。

下面的例子展示了如何使用OFFSET FETCH子句跳过前三行:

选择

*



雇员偏移3行,只取下一行;

 

这将跳过表中的前三行,只获取第四行。

结论

在本教程中,我们学习了如何在SQL中使用OFFSET FETCH子句来限制和跳过“select”语句的行数。它类似于LIMIT子句,但它是标准SQL定义的一部分。