更新:
我有一些带sync_numbers的表,如下所示:
---------------------
id | sync_number
---------------------
1 | 1
2 | 1
3 | 1
4 | 1
现在我想将sync_number设置为其最大值+ 1,但为每行执行此操作,如下所示:
---------------------
id | sync_number
---------------------
1 | 2
2 | 3
3 | 4
4 | 5
我该怎么做?
我试过这样的事情:
UPDATE u_shop SET sync_number = ((SELECT selected_value FROM (SELECT MAX(sync_number) AS selected_value FROM u_shop) AS sub_selected_value) + 1);
但是这会将相同的值放在所有不是我需要的行上。
答案 0 :(得分:3)
这应该有效:
UPDATE u_shop
inner join (SELECT @row := MAX(sync_number) FROM u_shop) r
SET sync_number = @row := @row + 1