gpt4 book ai didi

Sqlite 获取在每个 SELECT 请求中找到的记录的 ROW NUMBER 和 COUNT

转载 作者:行者123 更新时间:2023-12-05 06:44:19 25 4
gpt4 key购买 nike

我在网格应用程序上使用 Sqlite3 非常像 post here. .

网格需要显示的行数和找到的总行数,用于分页。

在 Oracle 上,我使用以下语句获取从 100 到 500 的行 - 字段 Id、姓名、电话,其中 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没有解决我的问题,因为它不返回记录数,只是翻阅表格。

非常感谢您的帮助...

最佳答案

在最新版本的 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;

关于Sqlite 获取在每个 SELECT 请求中找到的记录的 ROW NUMBER 和 COUNT,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29924638/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com