有人可以帮我解决下面的mysql查询: 我想构建一个类似的查询:
UPDATE users
SET ref_id = (select max(ref_id)where `role_id`=5) +1
WHERE user_id =102
AND `role_id`=5
答案 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
请记住,如果性能很重要,可能不是最有效的解决方案,因为它使用临时表。