sql - SQL - 仅当没有非空的匹配记录时才返回空值记录
问题描述
我有一个表,其中包含某些字段的多个条目,但没有其他字段。这是一个插图:
如果存在非空记录,我需要编写一个查询,该查询将返回带有数值的“类型”值的不同列表,但只有在没有与相应数值匹配的“类型”值时才返回空值. 所以,对于上表,我需要一个这样的记录集:
我认为这很容易,但我一直在摸索。任何帮助表示赞赏。
解决方案
您可以使用聚合:
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;
推荐阅读
- r - R会话使用大量内存但工作区中没有大对象
- node.js - 如何在 npm 脚本中使用环境变量
- javascript - 如何使用 JS 将 2D 图像转换为像 autocad 图像这样的草图矩阵
- tensorflow - 训练和推理时 Alpha Dropout 的行为
- python - xarray.dataset.sel 返回不需要的值
- xamarin - 按钮看起来像一个框架
- javascript - 如何从 gulp-contains 回调中提取文件名?
- multithreading - 使用'enlighten'状态栏停止删除到偏移量的终端输出
- c# - 如何将通用抽象映射到 Simple Injector 中的通用实现?
- python-2.7 - 使用 py2exe 冻结的 wxPython 应用程序在 Windows 10 上失去了视觉样式。任何指针?