sql - 在保留组的同时删除空值
问题描述
我有一个通过多个连接创建的表,类似于下面的内容
Episode|Case|Description|code|
------------------------------
1 |b22 |something..| a23|
1 |a12 |null |null|
2 |gh11|something..| a23|
3 |b877|something..|7thb|
从本质上讲,这一集是独一无二的,但每一集可能有多个案例,也可能没有多个案例,然后对于每个案例,其中会有描述和代码 - 对于某一集的某些案例,这些可能为空。
我需要做的是删除空行,但不删除剧集。因此,如果一个情节出现一次并且它具有空值,我需要保留它,如果它出现 5 次并且具有 3 行的空值,我想摆脱 3 个空行。
我已经尝试了一段时间,但我只是不确定如何实现我想要实现的目标。
解决方案
与NOT EXISTS
:
select t.* from tablename t
where coalesce(t.description, t.code) is not null
or not exists (
select 1 from tablename
where episode = t.episode and coalesce(description, code) is not null
)
见演示。
结果:
| Episode | Case | Description | code |
| ------- | ---- | ----------- | ---- |
| 1 | b22 | something.. | a23 |
| 2 | gh11 | something.. | a23 |
| 3 | b877 | something.. | 7thb |
推荐阅读
- android - 如何检查片段在fragmentActivity中是否可见?
- c# - 将对象传递给另一个 WPF 窗口 C#
- c# - .NET Core MailKit SMTP AUTH LOGIN 作为本地 linux 帐户
- angularjs - 从 AngularJS dist 文件夹创建符号链接到不同的 Angular.io dist 文件夹
- javascript - 我想从网站获取 JSON,但不断收到 401 错误
- php - 从 laravel 中的项目模型访问引用的图像模型
- c++ - GetDlgCtrlID 和 GetLastError 返回 0
- elasticsearch - 如何将elasticquery转换为kibana URL
- c++ - 在与标头分开的 cpp 中定义私有类函数时出错
- mysql - Prisma Docker 无法连接 MySQL 8“连接不可用”“连接被拒绝(连接被拒绝)”