SQL:除非所有值都匹配,否则不显示任何内容

时间:2016-08-09 01:44:06

标签: sql sql-server

所以在这种情况下我想显示相应值为1的每个ID。但是,在下面ID为4的情况下,我不希望它显示值为1的4,我只是希望它根本不显示4。如果我执行WHERE value LIKE '1',它会显示4的两个ID,其中值为1.有没有办法不显示4?提前谢谢。

ID:.......1...2...3...4...4...4...5
Value:....1...1...1...1...2...1...1

(顺便说一句,这是在Microsoft SQL Server管理工作室上)

3 个答案:

答案 0 :(得分:1)

如果您只想要ID,请使用聚合:

select id
from t
group by id
having min(value) = 1 and max(value) = 1;

答案 1 :(得分:0)

加上戈登的回答

我会添加一个计数,因为看起来你的数据有多个1,如果你有两个1,你可以将它作为min和max

select id
from t
group by id
having min(value) = 1 and max(value) = 1 and count(value) = 1;

您也可以使用

select id from t group by id having sum(value) = 1 and count(value) = 1;

答案 2 :(得分:0)

with cte as (
    select * from (values
        (1, 1),
        (2, 1),
        (3, 1),
        (4, 1),
        (4, 2),
        (4, 1),
        (5, 1)
    ) as x(ID, Value)
)
select * 
from cte
where ID not in (
    select ID 
    from cte 
    where Value > 1
);