如何筛选至少具有一个空值的特定列的输出的位置?
因此,例如,在状态列中至少有一个 NULL 值的用户?
ID | Status
B 2017-10-03 08:00:00
B NULL
G 2017-10-03 08:00:00
G 2017-10-03 08:00:00
G 2017-10-03 08:00:00
B 2017-10-03 08:00:00
D 2017-10-03 08:00:00
D NULL
D NULL
您可以使用聚合:
select id
from t
group by id
having count(*) <> count(status);
如果需要原始行,可以使用exists
:
select t.*
from t
where exists (select 1
from t t2
where t2.id = t.id and t2.status is null
);
我认为这是最简单,最快的方法。
select id
from t
where status is null
group by id;
查询:
select id
from tablename
where status is null
返回至少包含 1 个status
的所有id
null
和 。
所以像这样使用它:
select * from tablename
where id in (select id from tablename where status is null)
如果您只想要id
s:
select id
from tablename
group by id
having sum(status is null) > 0