我有一个简单的表,其中包含两列 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
我有一个简单的表,其中包含两列 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
好像您正在寻找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 的重复也很恶心。)