查询以查找具有多个条目的特定列的空值

Query to find null of specific column with multiple entries

使用下面的示例,我想找到所有在列中具有空值的用户,即使他们在 table 中有多个条目。例如,我有一个像这样的 table:

ID userid col1 col2 col3
1 user1 a null b
2 user1 b a b
3 user2 a null b
4 user2 b null b

我只想 return user2,因为它的 col2 没有为任何行填充任何内容。但是,我如何创建一个不会将我带回 user1 的查询,因为 user1 在其中一行中确实具有 col2 的值。 User1 一直被拉,因为它确实有一行 col2 为空。基本上任何 userId,在此 table 中的任何行中的 col2 中均未填充任何内容。如果 userId 在 col2 中确实有值,则不要 return 该 userId。

我试过这样的事情:

select distinct(a.userid) from User a
group by a.userid 
having a.col is null

如果只想要用户,可以使用聚合:

select user
from t
group by user
having max(col1) is null or
       max(col2) is null or
       max(col3) is null;

MAX()(或大多数聚合函数)return NULL 仅当所有值都是 NULL 时。您也可以使用 COUNT():

having count(col1) = 0 or
       count(col2) = 0 or
       count(col3) = 0;

使用NOT EXISTS:

SELECT DISTINCT u1.userid
FROM User u1
WHERE NOT EXISTS (SELECT 1 FROM User u2 WHERE u2.userid = u1.userid AND u2.col2 IS NOT NULL)