如何在Postgresql中正确使用FETCH FIRST?

时间:2016-07-19 19:50:09

标签: postgresql

我试图找出如何只选择SELECT查询的第一个元素。

似乎很多人使用LIMIT 1来仅选择第一个,但这似乎不是最好的方法。

我正在阅读Postgresql文档中的SELECT,似乎有一个FETCH语句的选项,但我无法在线找到任何示例,有人可以向我解释如何正确使用它吗?

1 个答案:

答案 0 :(得分:16)

以下陈述是等效的:

SELECT * FROM foo LIMIT 10;

SELECT * FROM foo FETCH FIRST 10 ROWS ONLY;

ROWS可以与ROW互换,这样可以在语法上更一致地获取1。

FETCH FIRST X ROWS ONLY是SQL标准的一部分,而对于我的回忆,LIMIT不是。 LIMIT非常受欢迎,而且更加简洁,所以它也得到了postgres的支持。

编辑添加:这两个语句仅在语法上不同。它们产生完全相同的计划:

=# explain select * from foo fetch first 10 row only;
                         QUERY PLAN                          
-------------------------------------------------------------
 Limit  (cost=0.00..0.22 rows=10 width=68)
   ->  Seq Scan on foo  (cost=0.00..18.50 rows=850 width=68)

=# explain select * from foo limit 10;
                         QUERY PLAN                          
-------------------------------------------------------------
 Limit  (cost=0.00..0.22 rows=10 width=68)
   ->  Seq Scan on foo  (cost=0.00..18.50 rows=850 width=68)