如何重新索引(数字)排序的sqlite表

cnd*_*cnd 3 sql sqlite

例如,我有索引的节点

1
2
7
8
Run Code Online (Sandbox Code Playgroud)

我需要将索引更改为

1 
2 
3 
4
Run Code Online (Sandbox Code Playgroud)

我可以

UPDATE TODO SET id = id + 1000000000
UPDATE TODO SET id = id - (1000000000 + 1)
Run Code Online (Sandbox Code Playgroud)

(棘手,因为id必须是唯一的)

移位所有索引并使0 1 6 7但我需要建立关系,需要使第一个索引转移到0,其他索引转移到前一个索引.在sqlite中没有存储过程,所以我很担心如何在没有变量的情况下建立这样的关系?

欢迎提供各种逻辑技巧.

CL.*_*CL. 5

  1. 创建一个具有相同结构的新的空表,但是创建id一个自动增量列(声明为INTEGER PRIMARY KEY);
  2. 按所需顺序将所有记录复制到该表中,但不包含该id列:

    INSERT INTO NewTable(all_the, other, columns)
    SELECT all_the, other, columns
    FROM OldTable
    ORDER BY id;
    
    Run Code Online (Sandbox Code Playgroud)
  3. 删除旧表,并将新表重命名为旧名称.

(这将从id1开始创建s.)