在sql中执行排序操作后获取行的偏移量

在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

我正在使用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" 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