我制作了一个类似于我需要的小数据集。它具有以下内容:
ID Color
2 blue
2 red
3 blue
3 yellow
4 white
4 green
4 blue
5 green
5 purple
5 black
我想选择已分组的ID,但不包括那些包含' white'或者'黑色'换句话说,应该显示ID 2和3。但是4和5不应该显示,因为他们有白色'和/或'黑色'在他们的颜色列中。
答案 0 :(得分:2)
总结这些禁止值在您的群组中出现的次数。仅选择此总和为零的那些
select id
from your_table
group by id
having sum(case when color in ('white','black') then 1 else 0 end) = 0
答案 1 :(得分:2)
SELECT *
FROM colortable
WHERE ID NOT IN (
SELECT ID
FROM colortable
WHERE Color IN ('white', 'black')
)
答案 2 :(得分:0)
你可以试试这个:
SELECT DISTINCT ID
FROM TABLE
WHERE Color NOT IN ('white', 'black')
希望这有帮助!!!
答案 3 :(得分:0)
SELECT t.ID
FROM @TABLE t
WHERE NOT EXISTS (
SELECT 1
FROM @TABLE
WHERE t.ID = ID
AND (color = 'white' or color = 'Black')
)
GROUP BY t.ID
WORKING SQL FIDDLE