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

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

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

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

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

ohtdti5x

ohtdti5x1#

可以使用聚合:

  1. select type, max(col2)
  2. from t
  3. group by type;

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

  1. select type, col2
  2. from t
  3. where col2 is not null
  4. union al
  5. select type, null
  6. from t
  7. group by type
  8. having max(col2) is null;

相关问题