获取具有两个具有特定值的两列的列

时间:2017-04-14 13:27:41

标签: sql

我有一个看起来像这样的表:

| col1 | col2 |
|------|------|
| a    | 1    |
| a    | 2    |
| a    | 3    |
| b    | 1    |
| b    | 3    |
| c    | 1    |
| c    | 2    |

我需要找到col1的值,其中存在两个具有相同col1值的行,其col2值为1和2

结果将是:

| col1 |
|------|
| a    |
| c    |

2 个答案:

答案 0 :(得分:4)

您可以使用所需的col2值过滤行,然后按col1进行分组,只使用count = 2

分组
select  col1
from    yourTable
where   col2 in (1, 2)
group by col1
having  count(distinct col2) = 2

答案 1 :(得分:0)

另一个解决方案是

select col1
from your_table
group by col1
having sum(case when col2 = 1 then 1 else 0 end) > 0
   and sum(case when col2 = 2 then 1 else 0 end) > 0