SQLite - 记录索引

时间:2015-03-24 22:40:17

标签: sql sqlite

为了描述我的问题,我创建了以下数据库:

表:

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中可以做到这一点的方法?

1 个答案:

答案 0 :(得分:1)

您可以使用子查询来获取id的名称,然后计算名称小于或等于该名称的行:

select count(*) as position
from town t
where t.name <= (select t2.name from t2 where t2.idtown = 9961)