group并在sql中有多个值

时间:2018-01-23 18:48:12

标签: sql oracle

我如何找到有多个类型id的id多于一个..

Id Name Type_id
1  A    11
1  B    11
1  A    22
1  C    22
2  A    11
2  B    11
3  A    22
3  C    22
4  A    11
4  B    22

我需要一个输出,其中哪个ID有多个类型id,在上面的示例中,Id 1和4有多个类型ID 11,22

输出

Id  
1   
4   

2 个答案:

答案 0 :(得分:4)

这很简单:

select id
from t
group by id
having min(type_id) <> max(type_id);

这几乎是您的描述的直接翻译。 (注意:您也可以使用count(distinct),但这会产生更多开销。)

答案 1 :(得分:2)

SELECT Id
FROM name_table
GROUP BY Id
HAVING COUNT(DISTINCT Type_id) > 1

在此查询中,您正在对具有相同ID的所有记录进行分组,但只打印具有多个不同type_id的记录