android - Android sqlite,为新列设置行位置
问题描述
我在表格中添加了一个新的列 ( position
)。它需要从 0 到 n 排序。并且应该反映行的顺序_id
。但问题是_id
有差距,因为有些行被删除了,position
不应该有差距。
像这样:
_id position[new column]
1 0
4 1
8 2
17 3
在数据库升级期间如何实现这一点?最好只有一个 sql 语句来执行execSQL
,而无需使用游标查询现有数据。
解决方案
其他 DBMS 必须ROW_NUMBER()
使这更容易。
在 SQLite 中,您可以使用相关子查询来计算“有多少行的 id 低于这一行”。恰好与您想要的枚举数列完全匹配的答案( position
)。
UPDATE
yourTable
SET
position = (SELECT COUNT(*)
FROM yourTable lookup
WHERE lookup._id < yourTable._id
)
推荐阅读
- mysql - 在 MySQL 中追加两个表中的数据并删除重复项(忽略大小写)
- javascript - 如何使用一个默认条件执行 3 个条件的三元语句
- javascript - 使用级联插入时TypeORM M2O O2M关系外键为空
- react-native - 传递状态时无法读取未定义的属性“映射”并将其映射为道具
- c# - .net mvc - 如何使类方法参数(IQueryable)可以为空
- android - 在android中按下后退按钮时如何将数据传递给上一个活动?
- android - 在根设备中使用 adb 命令删除保存的 wifi 网络
- c# - 如何仅从字符串数组中获取数字?
- json - 函数返回 json 而不仅仅是值
- android - android studio logcat 中的气体服务