mysql - 仅当所有分组行不为空时求和,否则返回空

标签 mysql

我有一个这样的表:

 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

DEMO

关于mysql - 仅当所有分组行不为空时求和,否则返回空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31212847/

相关文章:

php - 获取上周内的 MySQL 数据库条目

mysql - 使用Datastage工具读取加密数据

mysql - 更改 root 密码并访问 localhost/phpmyadmin 时出错

mysql 使用主键而不是索引

php - 将复杂查询转换为 zend_db 选择对象格式

mysql - 计数后的 SQL 查询公共(public)值

php - 使用 unlink() 从数据库中删除带有在 php 中上传的位置

php - 多列动态 PHP 列表

javascript - 使用 php、javascript 和 json 添加 map 标记

mysql - 搜索查询条件列是否可能?