我正在使用SQLite数据库。
假设我的ID为1到50的行。然后我执行select
和order by
操作。
说,结果是ID:6,3,5,2,9,12,1,34,45,15。
现在,我想知道上面结果中给定ID的特定行的偏移量。 ID 1
的偏移量为6。
我可以在一个查询中执行此操作吗?
答案 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