首页 > 解决方案 > 如何选择仅在另一列中包含空值的分组行?

问题描述

这有点令人困惑,所以我将尝试在下表中举例说明:

示例表

ID 数据1 数据2 数据3
1 无效的 无效的 无效的
1 无效的 无效的 无效的
2 1 无效的 1
2 1 无效的 无效的
2 1 无效的 1
3 1 无效的 无效的
3 1 无效的 1
4 无效的 无效的 无效的

因此,按相同的 ID 分组,我只想显示所有列中的所有数据都为空的那些 ID。在上面的表格示例中,只有 ID 1 和 4。

我正在尝试使用的代码 - 仅供参考:

select id
from example-table
group by id, data1, data2, data3
having data1 is null and data2 is null and data3 is null; 

有什么建议么?

标签: mysqlsqldatabasegroup-bysql-null

解决方案


您可以仅按 id 分组并在HAVING子句中设置条件:

SELECT id
FROM tablename
GROUP BY id
HAVING COALESCE(MAX(data1), MAX(data2), MAX(data3)) IS NULL;

推荐阅读