如何获取postgresql中最后执行的所选查询返回的行数

时间:2018-04-14 08:34:12

标签: sql postgresql

我刚刚开始使用 PostgreSQL 并创建了一个函数,该函数根据带有select子句和where limit子句的limit查询返回一个表。

我还想在不考虑CREATE OR REPLACE FUNCTION public.get_notifications( search_text character, page_no integer, count integer) RETURNS TABLE(id integer, head character, description text, img_url text, link text, created_on timestamp without time zone) LANGUAGE 'plpgsql' COST 100 VOLATILE ROWS 1000 AS $BODY$ DECLARE query text; skip_records int = page_no * count; BEGIN query = concat('SELECT id,head,description,img_url,link,created_on from notifications where head ilike ''%', search_text,'%''','offset ',skip_records,'limit ',count); RETURN QUERY Execute query; END; $BODY$; 子句的情况下从满足条件的函数返回所有行的计数。

这是函数

select * from get_notifications('s',0,5)

这是电话

{{1}}

1 个答案:

答案 0 :(得分:0)

您可以使用window function返回整个行集的计数:

select  col1
,       col2
,       count(*) over () as total_rows  -- < Window function
from    YourTable
order by
        col1
limit   10

over子句指定count进行操作的窗口。 over ()over (rows between unbounded preceding and unbounded following)的缩写。

Working example on SQL Fiddle.