我有一个像这样的Sqlite数据库表(,out升序)

但我需要按名称检索该表,当我将其设置为升序时,rowId按混乱的顺序更改如下

但每次我都需要按升序检索有限数量的联系人5。
像Aaa - Eeee和然后Ffff- Jjjjj .
但是对于0-5,5-10 .**它可以使用rowids,因为它们处于混乱状态。
所以,,我需要另一个列,比如(甲骨文中的rowNum)是1234567.每次如下所示:

如何使用现有列检索该列
Note: WE DONTE HAVE ROWNUM LIKE COLUMN IN SQLITE
发布于 2012-12-24 16:00:46
这是一种伪造RowNum的方式,希望它能有所帮助:
SELECT
(SELECT COUNT(*)
FROM Names AS t2
WHERE t2.name < t1.name
) + (
SELECT COUNT(*)
FROM Names AS t3
WHERE t3.name = t1.name AND t3.id < t1.id
) AS rowNum,
id,
name
FROM Names t1
ORDER BY t1.name ASCSQL示例
发布于 2013-10-05 15:09:20
假冒伪劣的rownum解决方案很聪明,但恐怕它不能很好地扩展(对于复杂的查询,您必须加入并依赖每一行,即当前行之前的行数)。
我会考虑使用create table tmp as select /*your query*/。因为在created操作中,插入行时创建的rowid恰好是行(计数器)。它是由SQLite文档指定的。
插入初始查询后,只需查询tmp表:
select rowid, /* your columns */ from tmp
order by rowid发布于 2012-12-24 16:41:56
您可以使用偏移量/限制。
获得五行第一、第二和第三组:
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警告,使用上述语法需要SQLite按排序顺序读取所有先前的记录。因此,要获得上面第3条语句的第10条记录,SQLite需要读取前9条记录。如果您有大量的记录,从性能的角度来看,这可能是个问题。
关于限制/抵消的更多信息:
https://stackoverflow.com/questions/14023292
复制相似问题