MySQL-在一条语句中通过查询更新表字段

时间:2019-01-13 02:52:11

标签: mysql

我成功地从数据库中检索了帖子少于2个的用户,并显示了如下查询结果:

SELECT Users.*, count( Posts.user_id ) 
FROM Posts LEFT JOIN Users ON Users.user_id = Posts.user_id
GROUP BY Posts.user_id
HAVING count( Posts.user_id ) < 2

接下来我要实现的是为该查询的所有用户更新一个称为active的字段,因此我尝试将UPDATE语句与第一个查询一起添加:

UPDATE Users
SET Users.Active = 3
WHERE count( Posts.user_id ) < 2

但是我无法使它正常工作。 应该将UPDATE部分放置在何处或应该单独运行?

1 个答案:

答案 0 :(得分:1)

在where语句中,您需要选择每个用户的帖子数并检查其是否小于2。

    UPDATE Users
    SET Users.Active = 3
    WHERE (SELECT count( Posts.user_id ) 
           FROM Posts 
           WHERE Users.user_id = Posts.user_id
           GROUP BY Posts.user_id) < 2