PostgreSQL Fetch条件

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

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

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

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

PostgreSQL Fetch 子句的语法

PostgreSQL FETCH 子句的一般语法如下:

OFFSET start { ROW | ROWS }  
FETCH { FIRST | NEXT } [ row_count ] { ROW | ROWS } ONLY  

在上面的语法中,我们有以下参数:

范围 描述
Start 它是一个整数,其本质值为正或零;否则采用其默认值,即零。
ROW | ROWS 这里的Row是ROWS的替代品,也就是说ROW是其他ROWS 的替代品;这就是为什么我们可以等效地使用它们。
Row_count 如果我们没有明确定义row_count,它将采用默认值,即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;  

执行上述命令后,我们将得到以下输出,其中显示以下四辆汽车的详细信息:

热门文章

优秀文章