php - 如何在查询中用 0 替换 NULL?

标签 php mysql sql

我有这个问题:

$db->prepare("UPDATE users 
               SET reputation = reputation +
                               (CASE WHEN id = ? THEN 2
                                     WHEN id = ? AND NOT ? THEN 15 END)
              WHERE id IN (?, ?); ")
->execute(array($author_ques_id, $author_ans_id, $isOwnAnswer,
                $author_ans_id, $author_ques_id));

请关注这一行:

WHEN id = ? AND NOT ? THEN 15 END)

NOT ?false (换句话说$isOwnAnswer = true)reputatuin 的值对于这样的用户将是 NULL .因为reputation = reputation + NULL评估 reputation = NULL .

那么我该如何防止呢?我想要当条件为时,然后 reputation不会改变。

最佳答案

不需要用另一个 CASE/COALESCE/IFNULL 或任何东西包装它,只需使用 CASE EXPRESSION ELSE ,以防万一不满足条件,将使用 ELSE

UPDATE users 
           SET reputation = reputation +
                            CASE WHEN id = ? THEN 2
                                 WHEN id = ? AND NOT ? THEN 15
                                 ELSE 0
                            END
          WHERE id IN (?, ?);

关于php - 如何在查询中用 0 替换 NULL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37859978/

相关文章:

php - Mysql 查询未在 opencart 中运行且未从数据库中获取数据

php - 在 Bluehost 上安装 Cakephp

python - 如何从 mysql 查询运行 python 脚本?

php - Laravel 4.1 Request::is for active menu 不工作

javascript - 如何在索引页中显示 ID 密码错误的 session 错误?

php - Google Charts API,包含 4 个图的散点图,每个图有 4000 个点,可杀死 HTTPD

MySQL `timestamp` 即使具有相同的列值也要更新

php - 使用 php 和 mysql 数据库返回对话列表以及每条消息的最后一条消息

sql - 更新和插入 SQL

c# - SQL Server : INNER JOIN writes out things two times