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}
在给定的语法中:
- ROW和ROWS/FIRST和NEXT作为同义词,允许互换使用。
- OFFSET_ROWS表示一个整数,该整数必须为零或正值。如果" offset_row "超过结果集中的总行数,则查询不返回任何行。
- 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定义的一部分。