SQL 中的 FETCH
FETCH 是一个 SQL 命令,与带有 OFFSET(起点)的 ORDER BY 子句一起使用,以使用游标顺序检索或获取选定的行,该游标一次移动和处理每一行,直到显示查询中提到的行数。
- 对于 FETCH,OFFSET 子句是强制性的。您不得使用 ORDER BY ... FETCH。
- 不允许将 TOP 与 OFFSET 和 FETCH 结合使用。
- OFFSET/FETCH 行计数表达式只能是将返回整数值的任何算术、常量或参数表达式。
- 对于 OFFSET 和 FETCH 子句,必须使用 ORDER BY。
句法:
SELECT *
FROM table_name
ORDER BY col_name
OFFSET starting point
FETCH NEXT k(constant) ROWS ONLY;
实现 FETCH 的步骤:
在这里,我们将讨论在 SQL 中实现 FETCH 命令的步骤。
步骤一:参考表:
让我们考虑根据班级学生的分数创建一个表格,其中包含以下显示的数据。ID NAME MATHEMATICS PHYSICS CHEMISTRY 501 Surya 99 97 85 502 Sravan 91 98 94 503 Charan 99 93 88 504 Ram 92 99 92 505 Aryan 94 99 88 506 Sathwik 91 88 91 507 Madhav 90 97 89
第 2 步:创建数据库:
CREATE DATABASE gfg;
第三步:使用数据库:
USE gfg;
第 4 步:创建表:
使用以下 SQL 查询创建具有 5 列的表 MarketList:
CREATE TABLE MarkList
(
id int,
name varchar(20),
mathematics int,
physics int,
chemistry int
);
第五步:插入数据到表中:
INSERT INTO MarkList VALUES(501,'Surya',99,97,85);
INSERT INTO MarkList VALUES(502,'Charan',99,93,88);
INSERT INTO MarkList VALUES(503,'Sravan',91,98,94);
INSERT INTO MarkList VALUES(504,'Ram',92,99,82);
INSERT INTO MarkList VALUES(505,'Aryan',94,99,88);
INSERT INTO MarkList VALUES(506,'Sathwik',91,88,91);
INSERT INTO MarkList VALUES(507,'Madhav',90,97,89);
第 6 步:插入后,表格将如下所示。
第 7 步:现在使用 fetch 命令获取数据:
要检索前 3 名学生的姓名、id 和总分,使用 fetch 命令如下:
SELECT Id, name, mathematics+physics+chemistry AS total
FROM MarketList
ORDER BY mathematics+physics+chemistry DESC
OFFSET 0 ROWS
FETCH NEXT 3 ROWS ONLY;
因此,SQL FETCH 命令用于按顺序从表中检索选定的行。当您想从有序集合中选择有限数量的行(如前 3、前 10 或后 3 等)时,使用它很方便。