将id更新为max(id)+1

时间:2013-10-08 13:53:01

标签: php mysql

有人可以帮我解决下面的mysql查询: 我想构建一个类似的查询:

UPDATE users 
SET ref_id = (select max(ref_id)where `role_id`=5) +1 
WHERE user_id =102 
AND `role_id`=5

2 个答案:

答案 0 :(得分:1)

子查询中的FROM子句???

UPDATE users
SET ref_id =
    (select max(ref_id) FROM ???? where role_id=5) + 1
WHERE user_id =102 and role_id=5

答案 1 :(得分:0)

好的我尝试了类似的请求,我遇到了这个MySQL错误:

1093 - You can't specify target table 'my_table' for update in FROM clause

尝试使用以下请求:

UPDATE `users`
SET
`ref_id` =
(
 ( SELECT max_id FROM ( SELECT MAX(ref_id) AS max_id FROM users WHERE `role_id`= 5) AS sub_selected_value )
 + 1
)
WHERE `user_id` = 102 AND `role_id` =5

请记住,如果性能很重要,可能不是最有效的解决方案,因为它使用临时表。