3

例如我有带索引的节点

1
2
7
8

我需要将索引更改为

1 
2 
3 
4

我可以

UPDATE TODO SET id = id + 1000000000
UPDATE TODO SET id = id - (1000000000 + 1)

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

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

欢迎每个逻辑提示。

4

2 回答 2

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;
    
  3. 删除旧表,并将新表重命名为旧名称。

(这将创建id从 1 开始的 s。)

于 2012-11-30T11:58:15.127 回答
3

How about this?

 UPDATE todo SET id = rowid
于 2012-11-30T11:53:47.047 回答