SQLite,选择逐行索引,而不是id

时间:2014-07-24 23:51:32

标签: sqlite

我有一个100K行的sqlite数据库。但是,其中一些行已被删除,因此主键不再是顺序的。现在,它们的订购方式如3,5,6,9,900,n ...

问题是我想将这些放在UITableView中,其中cellForIndexRowAtIndexPath为0,1,2,3等。有没有办法可以做类似的事情

SELECT * FROM table WHERE id =  0;

但不是id = 0,我想在0处选择索引位置;

SELECT * FROM table where table._table_index = 0; //don't try this at home

谢谢!

1 个答案:

答案 0 :(得分:2)

您可以使用LIMIT和OFFSET关键字选择结果集中特定位置的单个记录。

EX:此语句将在索引位置10返回一行

SELECT * FROM Table LIMIT 1 OFFSET 10; 

注意: 自回答问题以来,SQLite已经添加了窗口函数。使用窗口函数,可以在查询中返回记录的行号。

SELECT 
row_number() OVER (ORDER BY FirstName, LastName) AS rowNum,
FirstName, 
LastName,
FROM People;

在sqlite 3.25版本中添加了窗口函数

  • System.Data.Sqlite - 1.0.110.0或更新版
  • Microsoft.Data.Sqlite - 2.2.2或更新版