请问怎么在分页查询中返回分页前符合查询条件的记录数?

发布于 2022-09-11 17:38:19 字数 269 浏览 10 评论 0

请问怎么查查询分页中返回符答查询条件的记录总数:

select top 10 * 
from (select row_number() 
over(order by id asc) as rownumber,* 
from com_system_menu) temp_row
where rownumber>((2-1)*10);

我要的记录数是上面Where rownumber>((2-1)*10)前的所有记录数?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

ぇ气 2022-09-18 17:38:19

不知道你用的是什么数据库。

如果是MySQL的话有一个特性专门适用这种场景: FOUND_ROWS。比如按以下方式对某个表foobar执行查询

SELECT SQL_CALC_FOUND_ROWS * FROM foobar WHERE ...... LIMIT 10;           --- 执行分页查询并计算记录数
SELECT FOUND_ROWS();                                                      --- 获取计算后的记录数

注1,虽然上述是两条SELECT语句,但实际上查询只是执行一次。

如果使用的是PostgreSQL, 虽然没有完全对等的FOUND_ROWS实现,但是可以通过窗口函数变相地实现类似功能:

SELECT *, COUNT(*) OVER () AS total_rows FROM foobar WHERE ...... LIMIT 10;

注2,PG的上述查询会返回最多10行数据,其中列 total_rows 的值相同,它就是该查询不含LIMIT子句时的总行数。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文