Sql 按计数 (*) > 1 但具有不同值 2 的值 1 分组

Sql Group by Value1 having count(*) > 1 but with different value 2

给定一个 SQL table 这样的

id   value1 value2
---------------
1     1    1
2     1    1
3     1    1
4     2    1
5     2    2
6     3    1

我想找到所有具有重复值 1 的值 1(即使用 count(*)>1 的组),但前提是它们具有不同的值 2

所以在这个例子中我只想return 2

我正在使用 Postgres

如果我没理解错的话,这是带有 having 子句的 group by

select value1
from t
group by value1
having min(value2) <> max(value2) 

使用

select * from ( select * , ROW_NUMBER() OVER(PARTITION BY Value1  ORDER BY Value1 , Value2 ASC) AS RowValue1, ROW_NUMBER() OVER(PARTITION BY Value1 , Value2 ORDER BY Value1 , Value2 ASC) AS RowValue2 from Table_1 ) As TableTmp where TableTmp.RowValue1 <> TableTmp.RowValue2 

select * from Table_1 where value1 in (select value1 from Table_1 group by value1 having min(value2) <> max(value2) )