首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在sqlite中获得类似rowNum的列

如何在sqlite中获得类似rowNum的列
EN

Stack Overflow用户
提问于 2012-12-24 15:46:48
回答 3查看 12.7K关注 0票数 4

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

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

但每次我都需要按升序检索有限数量的联系人5

Aaa - Eeee然后Ffff- Jjjjj .

但是对于0-5,5-10 .**它可以使用rowids,因为它们处于混乱状态。

所以,,我需要另一个列,比如(甲骨文中的rowNum)是1234567.每次如下所示:

如何使用现有列检索该列

Note: WE DONTE HAVE ROWNUM LIKE COLUMN IN SQLITE

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-12-24 16:00:46

这是一种伪造RowNum的方式,希望它能有所帮助:

代码语言:javascript
复制
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 ASC

SQL示例

票数 2
EN

Stack Overflow用户

发布于 2013-10-05 15:09:20

假冒伪劣的rownum解决方案很聪明,但恐怕它不能很好地扩展(对于复杂的查询,您必须加入并依赖每一行,即当前行之前的行数)。

我会考虑使用create table tmp as select /*your query*/。因为在created操作中,插入行时创建的rowid恰好是行(计数器)。它是由SQLite文档指定的。

插入初始查询后,只需查询tmp表:

代码语言:javascript
复制
select rowid, /* your columns */ from tmp
order by rowid
票数 17
EN

Stack Overflow用户

发布于 2012-12-24 16:41:56

您可以使用偏移量/限制。

获得五行第一、第二和第三组:

代码语言:javascript
复制
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条记录。如果您有大量的记录,从性能的角度来看,这可能是个问题。

关于限制/抵消的更多信息:

Sqlite查询优化(使用限制和偏移量)

Sqlite /偏移量查询

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14023292

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档