【发布时间】:2019-05-01 05:44:07
【问题描述】:
我想使用具有相同值的字段作为参考,在我的 MySQL 表的列中进行大规模更新。 更新是分组时重复的数字序列。
MySQL 版本:
5.6.41-84.1
MySQL 表:
sis_coautoria
列和值
id_auto_coautoria | id_coautor | hierarquia_coautoria | id_trabalho
1, 1, null, 123
2, 43, null, 123
3, 2, null, 123
4, 2, null, 100
5, 1, null, 675
6, 50, null, 100
我想更新 hierarquia_coautoria 列,使用 id_trabalho 列作为参考,id_auto_coautoria 作为 ORDER BY。预期的结果是这样的:
id_auto_coautoria | id_coautor | hierarquia_coautoria | id_trabalho
1, 1, 1, 123
2, 43, 2, 123
3, 2, 3, 123
4, 2, 1, 100
6, 50, 2, 100
5, 1, 1, 675
id_trabalho = 123 的行更新为 1, 2, 3; id_trabalho = 100 更新为 1, 2 等等。
*如果需要,还有另一个带有 id_trabalho 列 的表作为参考。
其他 MySQL 表
sis_trabalhos
id_auto_trabalho | id_trabalho
1, 123
2, 100
3, 675
所以,我尝试了这样的方法:
SET @rank:=0;
UPDATE sis_coautoria
INNER JOIN sis_trabalhos ON sis_coautoria.id_trabalho = sis_trabalhos.id_trabalho
SET sis_coautoria.hierarquia_coautoria=@rank:=@rank+1;
结果:
id_auto_coautoria | id_coautor | hierarquia_coautoria | id_trabalho
1, 1, 1, 123
2, 43, 2, 123
3, 2, 3, 123
4, 2, 4, 100
5, 1, 5, 675
6, 50, 6, 100
...
结果是一个忽略 id_trabalho 条件为相同值的数字序列。
【问题讨论】: