在sql中执行排序操作后获取行的偏移量
我正在使用SQLite数据库 假设我有ID为1到50的行。然后我执行在sql中执行排序操作后获取行的偏移量,sql,database,sqlite,Sql,Database,Sqlite,我正在使用SQLite数据库 假设我有ID为1到50的行。然后我执行select和orderby操作 比如,结果是IDs:6,3,5,2,9,12,1,34,45,15 现在,我想知道在上述结果中具有给定ID的特定行的偏移量。ID 1的偏移量为6 我可以在单个查询中执行此操作吗?将已排序结果的查询放入子查询,并使用计数(*)检查id序列: 示例: 模式: 查询: 结果: 为什么不能在从光标读取行时简单地计算行数? CREATE TABLE tbl ("id" INTEGER,"val" INT
select
和orderby
操作
比如,结果是IDs:6,3,5,2,9,12,1,34,45,15
现在,我想知道在上述结果中具有给定ID的特定行的偏移量。ID 1的偏移量为6
我可以在单个查询中执行此操作吗?将
已排序结果的查询放入子查询
,并使用计数(*)
检查id序列:
示例:
模式:
查询:
结果:
为什么不能在从光标读取行时简单地计算行数?
CREATE TABLE tbl ("id" INTEGER,"val" INTEGER);
INSERT INTO tbl ("id","val")
VALUES
(12,6),(1,7),(34,8),(6,1),(9,5),
(45,9),(15,10),(3,2),(5,3),(2,4);
select id,(
select count(*)
from (
select id,val
from tbl order by val
) b
where a.val >= b.val)-1 as offset
from tbl a
order by offset
id offset
6 0
3 1
5 2
2 3
9 4
12 5
1 6
34 7
45 8
15 9