2015-03-24 66 views
0

的指数来形容我的问题,我已经创建了以下数据库: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

为此,您可以使用子查询的ID获取名称,再算上其名称小于或等于名行:

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

男子正要说你不能这样做,但这太棒了! – Blindy 2015-03-25 01:08:03