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

时间:2015-04-01 06:12:02

标签: sql database sqlite

我正在使用SQLite数据库。

假设我的ID为1到50的行。然后我执行selectorder by操作。

说,结果是ID:6,3,5,2,9,12,1,34,45,15。

现在,我想知道上面结果中给定ID的特定行的偏移量。 ID 1的偏移量为6。

我可以在一个查询中执行此操作吗?

1 个答案:

答案 0 :(得分:1)

ordered结果的查询放入subquery并使用count(*)并检查ID序列:

示例:


SCHEMA:

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);

QUERY:

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

SQLFIDDLE DEMO