我的更新查询有问题。我需要将{_ 1}}的最后一个用户行的notify_admin从0更改为1。 (结果应为id = 9且id = 13的行)
我正在尝试这样的事情:
action_type = abuse
不幸的是,它只更新了1行(id = 3)。
这是我的表:
UPDATE user_log SET notify_admin = 1
WHERE id IN (
SELECT DISTINCT user_id FROM (SELECT user_id FROM user_log) as UNIKALNE
) AND action_type LIKE 'abuse'
答案 0 :(得分:1)
您需要先为每个用户获取最新的saved
值,然后更新该列。
UPDATE user_log
JOIN
(
select id from user_log JOIN (
select user_id,max(saved) max_saved
from user_log
where action_type="abuse"
group by user_id
) t
ON t.user_id = user_log.user_id AND t.max_saved = user_log.saved
) t2
ON user_log.id = t2.id
SET notify_admin = 1
答案 1 :(得分:0)
在这里,您检查表中的User_id是否为distinct,因此它仅提供1,2,3,然后与滥用操作类型进行比较,以便更新匹配的第3行。
如果要更新所有行,请将User_id
替换为id
UPDATE user_log SET notify_admin = 1 WHERE id IN (SELECT DISTINCT id FROM (SELECT id FROM user_log) as UNIKALNE) AND action_type LIKE 'abuse'