mysql - MySQL 中 NULL 的情况

标签 mysql

如果 item_to_inv 中的商品数量为 NULL,我尝试将其设置为 0

SELECT
  i.`id`,
  (
    SELECT
      SUM(
        CASE
          WHEN (
            `quantity` < 0
            OR `quantity` IS NULL
          ) THEN 0
          ELSE `quantity`
        END
      ) AS `quantity`
    FROM
      `item_to_inv`
    WHERE
      `item_id` = i.`id`
    GROUP BY
      `item_id`
  ) AS `quantity`
FROM
  `item` AS `i`

以下项目 ID:5、8 和 10 在 item_to_inv 中没有记录

下面的 CASE WHEN 语句有什么问题?

CASE WHEN (`quantity` < 0 OR `quantity` IS NULL) THEN 0

enter image description here

最佳答案

case 语句没有任何问题,问题是对于 ids 5、8 和 10,您试图对不会返回 NULL 的值求和(请参阅 manual )。

您可以通过将查询更改为以下方式,使查询对这些 id 返回 0:

SELECT i.`id`
, (SELECT IFNULL(SUM(CASE WHEN (`quantity` < 0 OR `quantity` IS NULL) THEN 0 ELSE `quantity` END), 0) AS `quantity` FROM `item_to_inv` WHERE `item_id` = i.`id` GROUP BY `item_id`) AS `quantity`
FROM `item` AS `i`

关于mysql - MySQL 中 NULL 的情况,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49491123/

相关文章:

php - 在 PHP 中使用 PDO 在单个查询中获取行数和该行的数据

python - 使用Google Colaboratory在GCE上连接到MySQL

java - 登录在我的项目中不起作用

mysql - 避开 'Access denied for user ' root'@'localhost'(使用密码: NO)'

mysql - 前 x 行和分组依据(再次)

mysql - 基准测试 INNER JOIN 与 SUBSELECT

mysql - 如何在Amazon EC2 上浏览MySQL 数据库中的数据?

php - 将字符串中的单词替换为另一个单词或句子

php - 如何设置从另一个页面通过 AJAX 调用的下拉列表的默认值?

MySQL 链式不等式