0

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
4

1 に答える 1

0

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 の繰り返しは不快です。)

于 2013-08-21T06:25:32.633 に答える