我有一个这样的表:
item_id quantity
1 2
1 3
2 NULL
2 4
3 NULL
3 NULL
现在我正在做这样的选择:
SELECT
sum(`quantity`) AS `total_quantity`,
FROM `items`
GROUP BY `item_id`
现在,它分别返回 5、4 和 NULL,但我想要 5、NULL 和 NULL。
我希望如果分组行中有 NULL 值,则总和应该为 NULL,而不是列不为空的行的总和。我怎样才能做到这一点?
谢谢!
最佳答案
您只能使用case
语句来检查组中的任何行是否包含null
作为数量
SELECT item_id,
CASE WHEN SUM(quantity IS NULL) > 0
THEN NULL
ELSE SUM(quantity)
END quantity
FROM items
GROUP BY item_id
使用@Abhik Chakraborty 的 fiddle
关于mysql - 仅当所有分组行不为空时求和,否则返回空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31212847/