SQL Server - 获取具有特定值的列

时间:2017-05-02 18:05:44

标签: sql sql-server

我有一个SQL查询返回:

id    |  value
 1         a
 1         a
 1         b
 2         a
 2         a

我想只获得只有a值的id。所以id 2

怎么做?

3 个答案:

答案 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')