【问题标题】:Find duplicate rows in SQL Server by multiple conditions通过多个条件在 SQL Server 中查找重复行
【发布时间】:2014-11-11 07:32:59
【问题描述】:

我的字段是

ID | Name | StartTime | EndTime | Date | Description

我正在寻找一种方法来选择除 ID 之外的所有字段中具有相同条目的所有行。

我对 SQL 不是很熟悉,所以我尝试了 this 方法,但只有一个相关的字段(如我的情况)不是五个。

我的第一个想法是尝试类似:

SELECT *
FROM Table
order by Name, Date, StartTime, EndTime, Description

如果我查看所有条目,我至少会找到重复项,但这绝对不是解决问题的最佳方法。

【问题讨论】:

    标签: sql sql-server


    【解决方案1】:

    这应该可以满足您的需要:

    select Name, Date, StartTime, EndTime, Description
    from   table
    group by Name, Date, StartTime, EndTime, Description
    having count(*) > 1
    

    【讨论】:

      【解决方案2】:

      这个查询应该适合你:

      SELECT ID, Name, StartTime, EndTime, Date, Description
      FROM (
          SELECT 
              ROW_NUMBER() OVER (PARTITION BY ID ORDER BY ID, Name, Date, StartTime, EndTime, Description) AS 'IndexNr'
              , ID
              , Name
              , StartTime
              , EndTime
              , Date
              , Description
          FROM Table) AS ResultSet
      WHERE ResultSet.IndexNr > 1
      

      【讨论】:

        【解决方案3】:

        试试下面的查询。

        SELECT     Name, Date, StartTime, EndTime, Description
        FROM    Table
        GROUP BY Name, Date, StartTime, EndTime, Description
        HAVING      (COUNT(*) > 1)
        

        【讨论】:

          【解决方案4】:

          你可以试试这个:-

          SELECT *
          FROM TAB_NAME
          HAVING COUNT(CONCAT(Name, StartTime, EndTime, Date, Description)) > 1
          

          这将为您提供除 ID 之外的所有重复行。

          【讨论】:

          • 没有“GROUP BY”就不能使用“HAVING”
          • @t-clausen.dk 我认为查询是可执行的,您必须先尝试一下。仅当我们必须在 cond 中放置聚合函数时才使用have。它与claue 的组没有关系。您必须为此参考一些文档。
          • 好的,我现在正在参考一些文档。查看所有其他答案。如果它有效,你的语法也会很慢。如果您有 2 行的值:null、null、null、'A' 和 'A'、null、null、null,它们在此匹配中将被视为相同。使用 group by 时不能使用 wildchar ether。所以一切都错了。
          猜你喜欢
          • 2012-10-15
          • 2023-03-31
          • 2012-08-03
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-11-05
          • 2021-03-14
          • 1970-01-01
          相关资源
          最近更新 更多