我有这样的表:

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

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

10-13 03:25