gpt4 book ai didi

如果每列等于相同的值,MySQL 会更新行

转载 作者:行者123 更新时间:2023-11-29 17:16:08 25 4
gpt4 key购买 nike

我有一个这样的表:

----------------------------------------------------------
| Actions |
----------------------------------------------------------
| action_id | user_id | action_active | action_cancelled |
----------------------------------------------------------
| 1 | 1 | 0 | 0 |
----------------------------------------------------------
| 2 | 2 | 1 | 0 |
----------------------------------------------------------
| 3 | 1 | 0 | 0 |
----------------------------------------------------------
| 4 | 2 | 0 | 0 |
----------------------------------------------------------

如果用户的每一行的 action_active = 0,我想将 user_id 的所有 action_cancelled 更新为 1。如果他至少有一个action_active为1,则不更新。

在此示例中,应将第 1 行和第 3 行的 action_cancelled 更新为 1,因为用户 1 的每个 action_active 均为 0。

我想过这样的事情,但我不确定它是否正确:

UPDATE actions 
SET a.active_cancelled = 1
WHERE (SELECT p.user_id, SUM(p.action_active) as sum_p FROM actions p GROUP BY user_id WHERE a.user_id = p.user_id AND sum_p = 0);

我被困在哪里了。我怎么说“如果用户的所有行均为 action_active = 0,则更新它们”

希望得到一些帮助!

最佳答案

您可以使用HAVINGJOIN来做到这一点

    UPDATE actions a
JOIN
(
SELECT p.user_id, SUM(p.action_active) as sum_p
FROM actions p
GROUP BY user_id
HAVING sum_p = 0)
b ON a.user_id=b.user_id
SET a.action_cancelled = 1

关于如果每列等于相同的值,MySQL 会更新行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51609392/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com