You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何筛选按ID分组后其余所有列值全为NULL的分组行

问题原因分析

你编写的SQL存在逻辑错误:GROUP BY子句中额外加入了data1、data2、data3字段,会将同一个ID下字段值组合不同的行拆分为多个独立分组,最终只要某ID下存在任意一行三个数据列全为NULL就会被返回,无法满足「该ID下所有行的所有数据列全部为NULL」的筛选要求。


可行实现方案

方案1:使用MAX()函数判断

SELECT id
FROM `example-table`
GROUP BY id
HAVING MAX(data1) IS NULL 
   AND MAX(data2) IS NULL 
   AND MAX(data3) IS NULL;

逻辑说明:MAX()函数计算时会自动忽略NULL值,如果分组内某列存在任意非NULL的有效值,MAX()就会返回该非NULL值;只有分组内该列所有行都为NULL时,MAX()的返回值才是NULL,刚好匹配你的筛选规则。

方案2:使用COUNT()函数判断

SELECT id
FROM `example-table`
GROUP BY id
HAVING COUNT(data1) = 0
   AND COUNT(data2) = 0
   AND COUNT(data3) = 0;

逻辑说明:COUNT(指定列)仅统计该列非NULL值的行数,统计结果为0就代表该列在当前ID分组下所有行都是NULL。


内容的提问来源于stack exchange,提问作者lelunaa

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 07:45:04