有人可以帮我处理下面的 mysql 查询:我想构建一个查询,如:
UPDATE users
SET ref_id = (select max(ref_id)where `role_id`=5) +1
WHERE user_id =102
AND `role_id`=5
子查询中的 FROM 子句在哪里???
UPDATE users
SET ref_id =
(select max(ref_id) FROM ???? where role_id=5) + 1
WHERE user_id =102 and role_id=5
好的,我尝试了一个类似的请求,但我遇到了这个 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
请记住,如果性能很重要,这可能不是最有效的解决方案,因为它使用临时表。