这有点难以用语言解释,但这里是我尝试在 SQL 中执行的操作的示例。我有一个查询返回以下记录:
ID Z
--- ---
1 A
1 <null>
2 B
2 E
3 D
4 <null>
4 F
5 <null>
我需要过滤此查询,以便每个唯一记录(基于 ID)仅在输出中出现一次,如果同一 ID 有多个记录,则输出应包含 Z 列值为 <强>非空。如果给定 ID 只有一条记录,并且 Z 列的值为 null,则输出仍应返回该记录。因此上述查询的输出应如下所示:
ID Z
--- ---
1 A
2 B
2 E
3 D
4 F
5 <null>
您将如何在 SQL 中执行此操作?
最佳答案
您可以使用GROUP BY
来实现:
SELECT
ID, MAX(Z) -- Could be MIN(Z)
FROM MyTable
GROUP BY ID
聚合函数忽略 NULL
,仅当组中的所有值均为 NULL
时才返回它们。
关于sql - 从数据库中过滤唯一记录,同时删除双非空值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18211137/