如何根据另一列

时间:2016-07-30 08:43:49

标签: mysql phpmyadmin

我在数据库中只有一个表。

我希望按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 个答案:

答案 0 :(得分:1)

您可以在运行中生成从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