相当于 Postgresql 中的 FOUND_ROWS() 函数

问题描述 投票:0回答:3

我正在我的应用程序中进行一些分页,使用 PostgreSQL 的标准 OFFSET 和 LIMIT 关键字一次从数据库返回 20 行。 例如,要获取第 1 页:

SELECT stuff FROM table WHERE condition ORDER BY stuff OFFSET 0 LIMIT 20

应用程序要求我们还向用户显示记录总数。 所以,显然,我可以通过发出单独的查询来获取总数:

SELECT COUNT(*) FROM table WHERE condition

但是如果有大量行,那么这不是最佳解决方案。 我注意到 MySQL 有一个非常有用的函数,称为 FOUND_ROWS(),它正是我正在寻找的:

http://dev.mysql.com/doc/refman/5.0/en/information-functions.html#function%5Ffound-rows

PostgreSQL 中有等效的吗?

postgresql count pagination
3个回答
57
投票

PostgreSQL 拥有窗口函数已经有一段时间了,它可以用来做很多事情,包括在应用 LIMIT 之前计算行数。

基于上面的例子:

SELECT stuff,
       count(*) OVER() AS total_count
FROM table
WHERE condition
ORDER BY stuff OFFSET 40 LIMIT 20


-1
投票
SELECT
    n_live_tup     
FROM
    pg_stat_user_tables     
WHERE 
    relname = 'table_Name';
© www.soinside.com 2019 - 2024. All rights reserved.