仅当没有不为null的匹配记录时才返回具有null值的记录

u59ebvdq  于 2021-07-29  发布在  Java
关注(0)|答案(1)|浏览(395)

我有一个表,其中某些字段有多个条目,但其他字段没有。下面是一个例子:

如果存在非空记录,我需要编写一个查询,该查询将返回带有数值的“type”值的不同列表,但只有在没有与相应数值匹配的“type”值时,才返回带有null值的“type”值。所以,对于上表,我需要这样一个记录集:

我以为这会很容易,但我一直在挠头。谢谢你的帮助。

ohtdti5x

ohtdti5x1#

可以使用聚合:

select type, max(col2)
from t
group by type;

这保证了对于第一列中的每个值只返回一行,并且您只得到 NULL 当所有的值 NULL .
如果需要所有非空值和一个代表 NULL 其中一个不存在,可以使用如下逻辑:

select type, col2
from t
where col2 is not null
union al
select type, null
from t
group by type
having max(col2) is null;

相关问题