如何从分页类型的查询中获得总的可能结果集?

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

我在AS3 AIR中使用SQLLite,并且像下面的示例查询那样进行分页(每页100个结果)。

SELECT * FROM table1 WHERE col1 LIKE "%my keywords here%" LIMIT 100 OFFSET 0

它工作正常--当用户点击下一个或上一个按钮时,我改变了偏移量。所以下一个按钮的后续查询是。

SELECT * FROM table1 WHERE col1 LIKE "%my keywords here%" LIMIT 100 OFFSET 100

我想知道是否有可能得到所有可能的结果,这样我就可以dsiplay "第3页,共12页 "等等?还是说我必须做两个查询--第一个查询是没有LIMIT和OFFSET的count(*),这样我就能得到结果总数,然后再做上面的查询来得到实际的页面结果?

谢谢你的时间和帮助。

sqlite pagination
2个回答
1
投票

SQLite在飞行中计算结果记录,所以不可能找出如果不使用以下方法,你会得到多少记录 LIMIT;您必须使用 COUNT(*).

请注意,记录的顺序是不保证的,除非您使用 ORDER BY.此外,大 OFFSET 值是非常低效的;你应该在当前页面的最后一个值之后继续(见 滚动光标).


0
投票

在最新版本的SQLite(3.25.0和更高版本)中,有对 窗口功能. 这可能不是最有效的方法,但你可以通过以下方式在相同的查询中获得总记录数。

SELECT *, COUNT() OVER() AS totalCount  FROM dt_fi_business_account WHERE fi_name LIKE "%cre%" LIMIT 10 OFFSET 0

只需记住,总计数将与每行返回。

© www.soinside.com 2019 - 2024. All rights reserved.