所以在这种情况下我想显示相应值为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管理工作室上)
答案 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
);