我想执行此查询,但出现错误。我怎样才能运行这种类型的查询?
UPDATE `user`
SET id = (SELECT (MAX(t.id)+1) as id FROM `user` as t)
WHERE id='';
错误信息是:
[SQL]UPDATE `user` SET id = (SELECT (MAX(t.id)+1) as id FROM `user` as t) WHERE id='' LIMIT 1;
[Err] 1093 - You can't specify target table 'user' for update in FROM clause
我的表场景是
--------------
|User |
--------------
| id | name |
--------------
| 101 | A |
--------------
| | B |
--------------
| | C |
--------------
| | D |
--------------
我想这样更新
--------------
|User |
--------------
| id | name |
--------------
| 101 | A |
--------------
| 102 | B |
--------------
| 103 | C |
--------------
| 104 | D |
--------------
最佳答案
您可以使用变量来实现您的需要。
set @rownum:=101;
update user set id = @rownum:=@rownum+1 where id is null
关于mysql - 如何使用字段的最大值编写更新查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34039116/