我的数据格式如下:
ID Val
1 abc
1 xyz
2 abc
3 abc
3 pqr
3 xyz
4 abc
现在,我希望ID不具有除'abc'之外的任何其他值。这意味着我只需要ID 2,4。 1,3有abc以及其他2个值。输出应该看起来像
ID Val
2 abc
4 abc
我试过了:
SELECT ID, Val from
Table
WHERE Val = 'abc'
AND Val != 'xyz'
AND Val != 'pqr'
这给了我所有的ID。 有什么想法吗? 请帮忙!!
答案 0 :(得分:2)
我只需计算在子查询中满足此特定标准的行。
SELECT ID, Val from
Table T1
WHERE T1.Val = 'abc'
AND 1 = (SELECT COUNT(ID) FROM Table T2 WHERE T2.ID = T1.ID)
或者
SELECT ID, Val from
Table T1
WHERE T1.Val = 'abc'
AND NOT EXISTS (SELECT * FROM Table T2 WHERE T2.ID = T1.ID AND T2.Value != 'abc')
答案 1 :(得分:2)
我会使用简单的group by
和having
:
select id
from t
group by id
having min(val) = max(val) and min(val) = 'abc';
这对我来说似乎是最简单的方法。