我的数据库中只有一张表。

我想按inde列对表进行排序,然后根据id列重设inde列。

phpmyadmin:

SELECT * FROM `tmatria` ORDER BY `tmatria`.`inde` ASC; // 1 2 3 4 5...
//  now id column is 1050 1049 1047...
SET  @num := 0;
UPDATE tmatria SET id = @num := (@num+1);


结果:
MySQL returned an empty result set (i.e. zero rows).

更新:
如果我仅单独运行第一行,则可以,结果是1 2 3 4 5 ...
另外,如果我单独运行其余代码(SET @num...),它也可以工作,但是按inde排序将丢失。

因此,我要保持inde排序,然后重设id列。只有这样,两列才会具有相同的值。

最佳答案

您可以像这样即时生成从1开始的序列

SELECT *, @rank := @rank + 1 as ranking
FROM tmatria
cross join (select @rank := 0) tmp_alias
ORDER BY inde ASC


要更改数据,您可以尝试

SET  @num := 0;
UPDATE tmatria
SET id = @num := (@num+1)
ORDER BY inde ASC

关于mysql - 如何根据另一列重置ID列,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38672041/

10-08 23:19