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