【问题标题】:Sql Group by Value1 having count(*) > 1 but with different value 2Sql Group by Value1 具有 count(*) > 1 但具有不同的值 2
【发布时间】:2018-12-22 07:23:57
【问题描述】:

给定一个这样的 SQL 表

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

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

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

我正在使用 Postgres

【问题讨论】:

    标签: sql postgresql psql


    【解决方案1】:

    如果我理解正确,这是group by 带有having 子句:

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

    【讨论】:

      【解决方案2】:

      使用

      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) )
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-08-31
        • 1970-01-01
        • 1970-01-01
        • 2016-02-12
        • 1970-01-01
        • 1970-01-01
        • 2020-05-28
        相关资源
        最近更新 更多