SQL查询所有具有该ID的所有行与另一列中的值匹配的所有ID

时间:2018-12-12 21:43:39

标签: sql select

我正在尝试查询所有ID号的数据,其中具有该ID号的所有行都与另一列中的某个值匹配。

例如,查询所有具有该ID的行都具有蓝色的ID。

样品表:

ID:     Color: 

1       Red 
1       Blue 

2       Blue 
2       Blue 

3       Blue 

期望的查询结果:ID: 2, 3

我们看到带有ID: 1的一行具有Color: Blue,但是带有ID: 1的另一行具有Color: Red,因此不太正确。

如果我只是查询Color = Blue的不同ID,我会看到ID: 1, 2, 3

2 个答案:

答案 0 :(得分:1)

以下是使用aggregation的一种选择:

select id
from yourtable
group by id
having max(color) = 'Blue' and min(color) = 'Blue'

答案 1 :(得分:0)

这样的查询:

select id
from test
group by id
having sum(case when color = 'Red' then 1 else 0 end) < 1;

带演示的SQLFiddle:http://sqlfiddle.com/#!9/0da93b/11