如何在PostgreSQL中返回记录计数

时间:2011-08-25 06:54:48

标签: sql postgresql

我有一个限制和偏移量的查询。例如:

select * from tbl
limit 10 offset 100;

如何跟踪记录的数量,而不运行第二个查询,如:

select count(*) from tbl;

我认为this回答了我的问题,但我需要它用于PostgreSQL。有什么想法吗?

2 个答案:

答案 0 :(得分:4)

我找到了一个解决方案,我想分享一下。我所做的是 - 我使用过滤器从我的真实表创建一个临时表,然后我从临时表中选择一个限制和偏移(没有限制,所以性能很好),然后从中选择count(*)临时表(再次没有过滤器),然后我需要的其他东西,最后 - 我放下临时表。

select * into tmp_tbl from tbl where [limitations];
select * from tmp_tbl offset 10 limit 10;
select count(*) from tmp_tbl;
select other_stuff from tmp_tbl;
drop table tmp_tbl;

答案 1 :(得分:0)

我没有尝试过,但是从documentation中标题为Obtaining the Result Status的部分,您可以使用GET DIAGNOSTICS命令来确定命令的效果。

GET DIAGNOSTICS number_of_rows = ROW_COUNT;

来自文档:

  

此命令允许检索系统状态指示器。每个物品   是一个关键词,用于识别要分配给的状态值   指定变量(应该是要接收的正确数据类型)   它)。当前可用的状态项为ROW_COUNT,其数量为   由发送到SQL引擎的最后一个SQL命令处理的行,   和RESULT_OID,最近插入的最后一行的OID   SQL命令。请注意,RESULT_OID仅在INSERT之后有用   命令进入包含OID的表。