确定这里所说:

我有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
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top