【问题标题】:How to apply Count on multiple distinct columns and use Having clause如何在多个不同的列上应用 Count 并使用 Have 子句
【发布时间】:2014-07-23 03:26:46
【问题描述】:

我想做这样的事情,但是遇到错误请建议一些好的方法?

select A,B,C, count(Distinct A,B,C)
from table_name 
group by A,B,C 
having count(Distinct A,B,C) > 1 

基本上我在列(A、B、C)上有一个索引,有些行没有这个唯一的组合集,所以我正在尝试一个类似的查询来识别违反唯一约束的行。请告诉我是否有最好的方法

【问题讨论】:

    标签: sql oracle count indexing distinct


    【解决方案1】:

    如果您按这些列分组,那么您已经只获得了那些唯一记录,然后您可以使用count(*) 来获取您有多少重复项

    select A,B,C, count(*) 
    from table_name 
    group by A,B,C 
    HAVING count(*) > 1
    

    【讨论】:

      【解决方案2】:

      @jurgend 说的是对的,您可以通过执行进一步找到确切的行(我假设有更多字段要查看,可能包括 PK)

      SELECT * 
      FROM table_name 
      WHERE (A,B,C) IN ( 
          SELECT A, B, C 
          FROM table_name
          GROUP BY A, B, C
          HAVING COUNT(*) > 1
      )
      

      Tuple IN 列表查询适用于 Oracle,但并非所有其他 DBMS。

      【讨论】:

      • 它在 postgresql 中工作,我只是测试它。坦克你。
      猜你喜欢
      • 1970-01-01
      • 2019-04-17
      • 2011-06-23
      • 2018-06-10
      • 2017-07-27
      • 1970-01-01
      • 2013-11-14
      • 1970-01-01
      • 2017-08-15
      相关资源
      最近更新 更多