我在网格应用程序上使用Sqlite3非常类似于post here.。
网格需要显示的行和找到的总行数,用于分页。
在Oracle上我使用以下语句从100到500获取行 - 字段Id,Name,Phone其中Deleted = false:
SELECT * FROM (SELECT ROW_NUMBER()
OVER (ORDER BY ID) AS RN,
COUNT(*) OVER (ORDER BY (SELECT NULL) AS CNT)
Id, Name, Phone FROM MyTable WHERE Deleted='F')
T WHERE RN > 100 AND RN < 500;
在MySQl上,我通常使用excellet SELECT SQL_CALC_FOUND_ROWS
,后跟SELECT FOUND_ROWS()
来电。
所以我的问题是:
a)上面的Oracle或MySQL选项是否有相应的Sqlite3? b)如何在不发出2个选择的情况下在Sqlite3上完成该操作(一个用于查询,另一个用于计数)?
发布的问题here并没有解决我的问题,因为它没有返回记录数,只返回表中的页面。
非常感谢帮助...
答案 0 :(得分:0)
在最新版本的SQLite(3.25.0和更高版本)中,支持window functions。因此,您可以按以下方式重写查询:
SELECT * FROM (SELECT ROW_NUMBER() OVER (ORDER BY ID) AS RN,
COUNT() OVER () AS CNT,
Id, Name, Phone FROM MyTable WHERE Deleted='F')
T WHERE RN > 100 AND RN < 500;