📅  最后修改于: 2020-11-30 08:48:47             🧑  作者: Mango
在本节中,我们将了解PostgreSQL FETCH子句的工作原理,该子句用于响应特定语句返回的部分行。
H2,MySQL和HSQLDB等各种RDBMS (关系数据库管理系统)广泛使用LIMIT子句。
而且,我们在PostgreSQL教程的较早部分中学习了Limit Clause ,它用于限制语句返回的行数。并且LIMIT子句不遵循SQL标准。
因此,为了遵循SQL标准,PostgreSQL还引入了FETCH子句,该子句用于恢复命令返回的各种行。而FETCH条款是在2008年由SQL推出。
PostgreSQL FETCH子句的一般语法如下:
OFFSET start { ROW | ROWS }
FETCH { FIRST | NEXT } [ row_count ] { ROW | ROWS } ONLY
在以上语法中,我们具有以下参数:
Parameter | Description |
---|---|
Start | It is an integer whose essential value is Positive or Zero; otherwise takes its default value, which is zero. |
ROW | ROWS | Here, the Row is the replacement for ROWS, which means the ROW is the alternative for other ROWS; that’s why we can use them equivalently. |
Row_count | If we do not define the row_count clearly, it will take its default value, which is one. |
注意:
为了理解PostgreSQL fetch子句的实时运行,我们将使用在PostgreSQL教程的Limit子句部分中创建的CAR表。
在这里,我们从Car表中选择Car_id,Car_name和Car_model列,并在FETCH子句的帮助下获取按Car_ name升序排序的第一行,如以下命令所示:
SELECT car_id, car_name, car_model
FROM Car
ORDER BY car_name
FETCH FIRST ROW ONLY;
输出量
执行完上述命令后,我们将获得以下输出,该输出仅显示CAR表中的第一行。
或者我们可以使用以下命令,因为两个查询都生成相同的输出:
SELECT car_id, car_name, car_model
FROM Car
ORDER BY car_name
FETCH first 1 ROW ONLY;
输出量
执行以下命令后,我们将获得以下输出,该输出与上述命令显示的输出类似:
如果要选择前六行(按其Car_name排序),可以使用以下命令:
SELECT car_id, car_name
FROM Car
ORDER BY car_name
FETCH first 6 ROW ONLY;
输出量
执行完上述命令后,我们将获得以下输出,其中显示第一行-第六行,该行按其在CAR表中的Car_names排序。
在下面的示例中,我们将尝试获取下四个Car ,该汽车位于从CAR表中按Car_name排序的前六个汽车之后。
SELECT car_id, car_name, car_model
FROM Car
ORDER BY car_name
OFFSET 4 ROWS
FETCH first 4 ROW ONLY;
输出量
执行上述命令后,我们将获得以下输出,其中显示以下四个Cars详细信息: