use*_*427 4 sql sqlite iphone oracle objective-c
我有一个这样的Sqlite数据库表(没有升序)
但是我需要按名称以升序顺序检索表,当我按升序设置它时,rowId按照混乱的顺序改变如下
但我每次都需要按升序检索一些有限数量的联系人5
像Aaa - Eeee和Ffff-Jjjjj ......
但是要限制像0-5 5-10 ....**它可以使用rowid,因为它们是混乱的顺序
所以我需要另一个列,如(oracle中的rowNum),按顺序为1234567 ...每次都如下
如何使用现有列检索该列
Note: WE DONTE HAVE ROWNUM LIKE COLUMN IN SQLITE
yve*_*ves 17
假rownum解决方案很聪明,但我担心它不能很好地扩展(对于复杂的查询,你必须加入并依赖每一行当前行之前的行数).
我会考虑使用create table tmp as select /*your query*/
.因为在创建为select操作的情况下,插入行时创建的rowid正好是rownum(计数器).它由SQLite doc指定.
插入初始查询后,您只需查询tmp表:
select rowid, /* your columns */ from tmp
order by rowid
Run Code Online (Sandbox Code Playgroud)
您可以使用偏移/限制.
获取五行的第一,第二和第三组:
select rowid, name from contactinfo order by name limit 0, 5
select rowid, name from contactinfo order by name limit 5, 5
select rowid, name from contactinfo order by name limit 10, 5
Run Code Online (Sandbox Code Playgroud)
警告,使用上述语法要求SQLite按排序顺序读取所有先前的记录.因此,要获得SQLite之上的第3条语句,需要读取前9条记录.如果您有大量记录,从性能角度来看,这可能会有问题.
有关限制/偏移的更多信息:
归档时间: |
|
查看次数: |
12169 次 |
最近记录: |