MySQL - 组合具有不同 SET 和 WHERE 子句的 2 个查询

标签 mysql sql sql-update where-clause

不久前@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/

相关文章:

如果记录不在临时表中,mysql更新表

mysql - 如何将表名连接到行值以重命名列

mysql - #1054 - 'field list' 中的未知列

javascript - 如何在编程语言之间共享数据

SQL Case 语句(理解)

c# - SQL:按顺序对 VarBinary 列执行 UPDATE .WRITE

mysql通过拥有计数组

mysql - 批处理文件中的 SQL 结果

mysql - 在 mysql select 语句中使用每 2 个字符后在字符串中添加连字符

mysql - 打开一条记录,更新它并在 MySQL 中作为新记录插入