0

有人可以帮我处理下面的 mysql 查询:我想构建一个查询,如:

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

2 回答 2

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
于 2013-10-08T13:55:22.587 回答
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

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

于 2013-10-08T14:13:03.413 回答