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;
执行上述命令后,我们将得到以下输出,其中显示以下四辆汽车的详细信息:
热门文章
优秀文章