我有一个SQL查询返回:
id | value
1 a
1 a
1 b
2 a
2 a
我想只获得只有a
值的id。所以id 2
怎么做?
答案 0 :(得分:2)
您可以使用aggregation和having子句检查所有行是否具有值' a'对于给定的id:
使用Count
:
select id
from t
group by id
having count(*) = count(case when value = 'a' then 1 end);
或使用Sum
select id
from t
group by id
having SUM(case when value = 'a' then 0 else 1 end) = 0;
答案 1 :(得分:0)
使用下一个代码: -
Select id
from #test
group by id
having sum (case when value = 'a' then 0 else 1 end) = 0
线索正在传递0
'a'
并传递1
给其他人,然后总和等于0
答案 2 :(得分:0)
这比@Gurwinder Singh的答案稍慢,但如果表现不是你的首要任务,那么可读性会更高。
CREATE TABLE tmp (id int, [value] char(1))
INSERT INTO tmp values (1,'a'),(1,'a'),(1,'b'),(2,'a'),(2,'a')
SELECT DISTINCT id
FROM tmp a
WHERE [value] = 'a'
AND id NOT IN (
SELECT id FROM tmp
WHERE [value] <> 'a')