Mik*_*ain 17 postgresql paging count
我正在我的应用程序中进行一些分页,使用PostgreSQL的标准OFFSET和LIMIT关键字一次从数据库返回20行.例如,要获取第1页页面:
SELECT stuff FROM table WHERE condition ORDER BY stuff OFFSET 0 LIMIT 20
Run Code Online (Sandbox Code Playgroud)
我们还向用户显示记录总数,这是应用程序的要求.所以,显然,我可以通过发出一个单独的查询来获得总数:
SELECT COUNT(*) FROM table WHERE condition
Run Code Online (Sandbox Code Playgroud)
但是如果存在大量行,那么这不是最佳解决方案.我注意到MySQL有一个非常有用的函数FOUND_ROWS(),它正是我正在寻找的:
http://dev.mysql.com/doc/refman/5.0/en/information-functions.html#function%5Ffound-rows
PostgreSQL中有相同的东西吗?
And*_*ing 36
PostgreSQL现在有一段时间的窗口函数可以用来做很多事情,包括在应用LIMIT之前计算行数.
基于上面的例子:
SELECT stuff,
count(*) OVER() AS total_count
FROM table
WHERE condition
ORDER BY stuff OFFSET 40 LIMIT 20
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7980 次 |
| 最近记录: |