【问题标题】:Find duplicates in SQL Server database where one of the columns must differ在 SQL Server 数据库中查找其中一列必须不同的重复项
【发布时间】:2015-11-26 16:44:18
【问题描述】:

我正在尝试编写一个 SQL 查询来查找重复项。我无法做到的是让我的查询只选择其中一个列值必须不同的重复项。所以,我想找到所有列都相同但其中一个值必须不同的所有重复项。

我现在得到了什么:

SELECT 
    a.1, underlag.1, f.1, f.2, f.3, f.4, f.5,  f.6, f.7, f.8, 
    COUNT(*) TotalCount 
FROM 
    f
JOIN
    a ON a.Id = f.Id
JOIN 
    underlag ON underlag.Id = f.Id
GROUP BY 
    a.1, underlag.1, f.1, f.2, f.3, f.4, f.5,  f.6, f.7, f.8
HAVING 
    COUNT(*) > 1
ORDER BY 
    underlag.1

我想要区别的列是 f.9,但我不知道如何做到这一点。任何正确方向的帮助或指示都会很棒!

【问题讨论】:

  • 在 SO.... 上提出了许多“查找重复问题”。
  • 是的,我知道。但我似乎找不到有人需要其中一个列值不同的地方。
  • 有count(distinct f.9) > 1?

标签: sql sql-server duplicates


【解决方案1】:
SELECT *
FROM (
    SELECT
          a1 = a.[1]
        , underlag1 = underlag.[1]
        , f.[1], f.[2], f.[3], f.[4], f.[5], f.[6], f.[7], f.[8], f.[9]
        , val = SUM(1) OVER (PARTITION BY CHECKSUM(f.[1], f.[2], f.[3], f.[4], f.[5], f.[6], f.[7], f.[8]))
    FROM f
    JOIN a on a.Id = f.Id
    JOIN underlag on underlag.Id = f.Id
) t
WHERE t.val > 1
ORDER BY underlag1

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-07
    • 1970-01-01
    • 1970-01-01
    • 2022-01-20
    • 1970-01-01
    • 2019-10-12
    相关资源
    最近更新 更多