Column A | Column B (Beverage)
Andres Coffee
Erica Coffee
David Beer
Tyler Beer
Tyler Beer
Andres Shake
Erica Coffee
Erica Coffee
David Beer
David Coffee
Tyler Water
Tyler Shake
然后我只想看埃里卡和大卫(因为他们只有咖啡和/或啤酒),但不是安德列斯,因为他有摇晃;不是泰勒,因为他既有摇晃又有水。
答案 0 :(得分:0)
您可以结合使用EXISTS
和NOT EXISTS
:
SELECT *
FROM YourTable AS T
WHERE EXISTS(SELECT 1 FROM YourTable
WHERE ColumnA = T.ColumnA
AND ColumnB IN ('Coffee','Beer'))
AND NOT EXISTS(SELECT 1 FROM YourTable
WHERE ColumnA = T.ColumnA
AND ColumnB IN ('Shake','Water'))
答案 1 :(得分:0)
您可以使用not exists排除和区分以显示唯一的columnA
SELECT distinct ColA FROM YourTable AS T
WHERE ColumnB IN ('Coffee','Beer')
AND NOT EXISTS(SELECT 1 FROM YourTable T2
WHERE T2.ColumnA = T.ColumnA
AND T2.ColumnB IN ('Shake','Water'))
答案 2 :(得分:0)
简单GROUP BY。
不需要相关的子查询(存在/不存在)。
select ColumnA
from mytable
group by ColumnA
having count (case when ColumnB in ('Coffee','Beer' ) then 1 end > 0
and count (case when ColumnB in ('Water ','Shake') then 1 end = 0
答案 3 :(得分:0)
select columnA from t where columnB in ('Coffee','Beer')
minus
select columnA from t where columnB in ('Shake')
minus
select columnA from t where columnB in ('Shake','Water')
having count(distinct columnB)=2
;