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) )
给定一个 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) )