如果 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
最佳答案
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/