【问题标题】:Find duplicated rows that are not exactly same查找不完全相同的重复行
【发布时间】:2012-09-25 20:16:04
【问题描述】:

我可以选择所有具有相同列值的行(例如 SSN 字段),但可以单独显示它们。 ?

我已经搜索过这个答案,但它们都有“计数(*)和分组依据”部分,要求行完全相同。

【问题讨论】:

    标签: sql oracle duplicates


    【解决方案1】:

    试试这个:

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

    我已经完成了 SQL 服务器。但希望这是你需要的

    【讨论】:

      【解决方案2】:

      这是另一种方法,它只引用一次表,使用分析函数而不是子查询来获取重复计数它可能会更快;它也可能不会,具体取决于特定数据。

      SELECT * FROM (
        SELECT col1, col2, col3, ssn, COUNT(*) OVER (PARTITION BY ssn) ssn_dup_count
      )
      WHERE ssn_dup_count > 1
      ORDER BY ssn_dup_count DESC
      

      【讨论】:

        【解决方案3】:
        SELECT
            *
        FROM
            MyTable
        WHERE
            EXISTS
            (
                SELECT
                    NULL
                FROM
                    MyTable MT
                WHERE
                    MyTable.SameColumnName = MT.SameColumnName
                AND MyTable.DifferentColumnName <> MT.DifferentColumnName)
        

        【讨论】:

          【解决方案4】:

          这将获取所需的数据并按顺序显示它们,以便我们可以一起查看分组数据。

          SELECT * FROM TABLENAME
          WHERE SSN  IN
          (
              SELECT SSN FROM TABLENAMEGROUP BY SSN HAVING COUNT(SSN)>1
          )
          
          ORDER BY SSN 
          

          这里的 SSN 是进行相似值检查的列名。

          【讨论】:

            猜你喜欢
            • 2023-01-12
            • 1970-01-01
            • 2021-02-02
            • 2015-01-24
            • 2020-07-27
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2017-07-22
            相关资源
            最近更新 更多