Android sqlite,为新列设置行位置

时间:2018-05-03 10:14:34

标签: android sql sqlite sql-update

我在表格中添加了一个新的columnt(position)。需要从0到n进行排序。并且应该按_id反映行的顺序。但问题是_id有差距,因为有些行被删除了,而position不应该有差距。

像这样:

_id   position[new column]
1     0 
4     1   
8     2
17    3

如何在升级数据库期间实现此目的?只用一个sql语句来执行execSQL会很棒,而不需要用游标查询现有数据。

1 个答案:

答案 0 :(得分:2)

其他DBMS ROW_NUMBER()使这更容易。

在SQLite中,您可以使用相关的子查询来计算“有多少行的ID低于此值”。答案恰好与您想要的position的枚举器列完全匹配。

UPDATE
  yourTable
SET
  position = (SELECT COUNT(*)
                FROM yourTable   lookup
               WHERE lookup._id < yourTable._id
             )