我有一个包含两列user_id,cumulative_score的简单表。我有一个流程可以让一群用户在任务上进行评估并为他们分配分数。现在我必须更新用户的累积分数。是否可以在单个查询中执行此操作
UPDATE scores where user_id = "a" set score = score + a_score
and where user_id = "b" set score = score + b_score
答案 0 :(得分: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的重复很吵。)