我有一张users
表,用于存储用户信息以及 Stackoverflow 所具有的声誉评分。
我的问题是如何使用单个 MySQL 查询更新多个用户的声誉。
这是我的users
桌子
user_id reputation
1 11
2 202
3 3003
4 444
5 555
假设 user_id=1 否决了 user_id=4 和 user_id=5。在这种情况下,user_id=1 的声誉损失 2 分,而 user_id=4,5 的声誉都损失 10 分。
该users
表将如下所示:
user_id reputation
1 9 //lost 2 points
2 202
3 3003
4 434 //lost 10 points
5 545 //lost 10 points
我知道下面显示的 MySQL 查询有效,但我想知道在用户数量UPDATE
可变且取决于投票的情况下,一个通用的解决方案。
UPDATE `users`
SET `reputation` = CASE
WHEN `user_id` = '1' THEN reputation - 2
WHEN `user_id` = '4' THEN reputation - 10
WHEN `user_id` = '5' THEN reputation - 10
ELSE `reputation` END