我试图找出如何只选择SELECT查询的第一个元素。
似乎很多人使用LIMIT 1来仅选择第一个,但这似乎不是最好的方法。
我正在阅读Postgresql文档中的SELECT,似乎有一个FETCH语句的选项,但我无法在线找到任何示例,有人可以向我解释如何正确使用它吗?
答案 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)