📜  PostgreSQL Fetch子句

📅  最后修改于: 2020-11-30 08:48:47             🧑  作者: Mango

PostgreSQL提取子句

在本节中,我们将了解PostgreSQL FETCH子句的工作原理,该子句用于响应特定语句返回的部分行。

H2,MySQL和HSQLDB等各种RDBMS (关系数据库管理系统)广泛使用LIMIT子句。

而且,我们在PostgreSQL教程的较早部分中学习了Limit Clause ,它用于限制语句返回的行数。并且LIMIT子句不遵循SQL标准。

因此,为了遵循SQL标准,PostgreSQL还引入了FETCH子句,该子句用于恢复命令返回的各种行。而FETCH条款是在2008年由SQL推出。

PostgreSQL Fetch子句的语法

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.

注意:

  • 如果未定义OFFSET子句,则起始位置大于结果中的行数,并且由于未命名该表中保留的行顺序,因此不会返回任何行。
  • 如果要使我们的软件与其他数据库系统兼容,则应使用FETCH子句,因为它遵循标准SQL,并且FETCH子句在功能上与LIMIT子句相当。

PostgreSQL FETCH子句的示例

为了理解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详细信息: