在一个组中为特定列选择只有空值的不同计数

uurity8g  于 2021-06-19  发布在  Mysql
关注(0)|答案(2)|浏览(358)

我有两列像这样-id和val。

我需要这样一个不同的id,每个id对应一个空值。按id使用“groupby”然后在有null的地方使用“having”子句是否合理?

bihw5rsg

bihw5rsg1#

获取有 NULL 我倾向于从以下几点开始:

select id
from t
group by id
having count(*) <> count(val);

此结构允许您检查其他值,例如非- NULL 价值观。
使用 NULL 值为:

select distinct id
from t
where val is null;

如果你只想数数:

select count(distinct id)
from t
where val is null;
fd3cxomn

fd3cxomn2#

我会用 NOT EXISTS :

SELECT COUNT(DISTINCT id)
FROM table t
WHERE NOT EXISTS (SELECT 1 FROM table t1 WHERE t1.id = t.id AND t1.val IS NOT NULL);

其他选项使用 GROUP BY :

SELECT COUNT(id)
FROM table t
GROUP BY id
HAVING SUM(CASE WHEN val IS NOT NULL THEN 1 ELSE 0 END) = 0;

相关问题