SQLite - 按顺序将表更新为行数

时间:2016-10-14 21:09:17

标签: 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的重复序数顺序):

Id Ordinal
10 1
20 2
30 3
40 4

是否可以在SQLite中使用纯SQL?

1 个答案:

答案 0 :(得分:2)

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
                  );