不久前@Richard Harris gave a great answer for a similar question ,但我相信我的情况略有不同。
如您所见,我有 2 个连续的 UPDATE 语句针对相同的表和字段,但具有不同的 SET 和 WHERE 子句。
$this->db->query("
UPDATE user_profiles
SET reputation = reputation + 15
WHERE user_id = $answer_author_id;
");
$this->db->query("
UPDATE user_profiles
SET reputation = reputation + 2
WHERE user_id = $user_id;
");
我想知道这是否可以组合成一个查询,或者是否需要进一步规范化。另外,这些连续的查询是不是太低效了?如果没有,我不会费心尝试组合成一个查询。
非常感谢您对此的想法。
最佳答案
你可以这样做:
UPDATE user_profiles
SET reputation = reputation +
case when user_id = $answer_author_id then 15
when user_id = $user_id then 2
else 0
end
WHERE user_id = $answer_author_id or user_id = $user_id;
关于MySQL - 组合具有不同 SET 和 WHERE 子句的 2 个查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6887214/