user_id、cumulative_score の 2 つの列を持つ単純なテーブルがあります。タスクで多数のユーザーを評価し、それらにスコアを割り当てるプロセスがあります。ここで、ユーザーの累積スコアを更新する必要があります。単一のクエリでそれを行うことは可能ですか
UPDATE scores where user_id = "a" set score = score + a_score
and where user_id = "b" set score = score + b_score
user_id、cumulative_score の 2 つの列を持つ単純なテーブルがあります。タスクで多数のユーザーを評価し、それらにスコアを割り当てるプロセスがあります。ここで、ユーザーの累積スコアを更新する必要があります。単一のクエリでそれを行うことは可能ですか
UPDATE scores where user_id = "a" set score = score + a_score
and where user_id = "b" set score = score + b_score
CASEを探しているようです:
UPDATE scores SET
score = score + (CASE WHEN user_id = 'a' THEN a_score ELSE b_score END)
WHERE
user_id = 'a' OR user_id = 'b';
ただし、状況によっては、個別のクエリを実行するだけの方がよい場合があります。(このクエリはすでにかなり読みにくいものであり、user_id の繰り返しは不快です。)