SQL消除多个值),如果相同的标识符具有相关联的NULL值
-
26-09-2019 - |
题
确定这里所说:
我有ID的表(可以是重复的,但不是NULL)和值(可以是重复的和NULL)
id value
----- -----
1 red
1 red
1 (null)
2 blue
2 blue
3 (null)
那么,如何返回ID和所有的价值的具有价值,但如果一个空值也发现不包括在结果集中的记录。
因此,返回将是
id value
----- -----
2 blue
为ID 1和3在一个具有(零)的值或多个的结果
解决方案
这是一个典型的“选择这里不存在”用许多方法来写答案,例如型查询:
使用LEFT JOIN / WHERE ... IS NULL:
SELECT DISTINCT T1.id, T1.value
FROM your_table T1
LEFT JOIN your_table T2
ON T1.id = T2.id AND T2.value IS NULL
WHERE T2.id IS NULL
使用NOT IN:
SELECT DISTINCT id, value
FROM your_table
WHERE id NOT IN
(
SELECT DISTINCT id
FROM your_table
WHERE value IS NULL
)
使用NOT EXISTS:
SELECT DISTINCT id, value
FROM your_table
WHERE NOT EXISTS
(
SELECT NULL
FROM your_table T1
WHERE your_table.id = T1.id AND T1.value IS NULL
)
其他提示
select t1.id, t1.value
from MyTable t1
left outer join MyTable t2 on t1.id = t2.id and t2.value is null
where t2.id is null
group by t1.id, t1.value
不隶属于 StackOverflow