为了描述我的问题,我创建了以下数据库:
表:
CREATE TABLE Town
(
IdTown integer PRIMARY KEY ASC,
Name TEXT
);
记录:
IdTown Name
1870 Brighlingsea
8723 Chelmsford
2263 Clacton on Sea
1263 Colchester
3299 Gt. Yarmouth
6565 Harwich
9526 Ipswich
9961 Kelverdon
7263 Manningtree
3589 Norwich
3647 Witham
6632 Wivenhoe
我想要实现的是编写一个查询,该查询返回包含特定主键值的记录的索引位置,同时记录按名称顺序排序。
例如,如果我传入9961的IdTown,它将返回8,因为按名称顺序排序时,Kelverdon是第8条记录。
在SQL Server(我更熟悉)中,我会使用这样的查询:
select Position
from
(
select IdTown, ROW_NUMBER() OVER(ORDER BY Name) AS position
from Town
) s1
where s1.IdTown = 9961
有没有人知道我在SQLite中可以做到这一点的方法?
答案 0 :(得分:1)
您可以使用子查询来获取id的名称,然后计算名称小于或等于该名称的行:
select count(*) as position
from town t
where t.name <= (select t2.name from t2 where t2.idtown = 9961)