SQL无法更新几行

时间:2017-03-06 07:23:13

标签: mysql sql

我的更新查询有问题。我需要将{_ 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' 

2 个答案:

答案 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'