SQLite - 更新表以按顺序对行进行编号

标签 sql sqlite

我有这样的表:

CREATE TABLE Scan
(Id Integer,
Ordinal Integer)

INSERT Scan VALUES(10, 1)
INSERT Scan VALUES(20, 1)
INSERT Scan VALUES(30, 8)
INSERT Scan VALUES(40, 10)

我想更新 Ordinal 列,以便所有数字都像这样按顺序排列(以防按 Id 重复 Ordinal 顺序):

Id Ordinal
10 1
20 2
30 3
40 4

在 SQLite 中可以使用普通 SQL 吗?

最佳答案

SQLite 并没有真正做到这一点的好方法。这是一种不是特别有效的方法:

update scan
    set ordinal = (select count(*)
                   from scan s2
                   where s2.ordinal < scan.ordinal or
                         s2.ordinal = scan.ordinal and s2.id <= scan.id
                  );

关于SQLite - 更新表以按顺序对行进行编号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40052029/

相关文章:

php - 如何通过将最后一行值和插入值相加来将值插入到sql数据库中

sql - 通过 Access 查询从 Access 数据库导入到 Sql Server 时出现问题

sqlite - 如何在本地时间应用 strftime

mysql - 如何正确使用 SQLite 进行 CREATE INDEX

sql - DB2 和 Oracle 上的扫描/更新操作统计信息

php - 使用多个复选框名称查询搜索

mysql - 关联表而不扭曲数据

java - ClassNotFoundException : javax. annotation.Generated with JDK 11

c++ - 使用RDBMS来减少内存消耗?

sql - 哪种是使用 SQLite DB 的最佳方式?