【问题标题】:Deduping the SQL Server table对 SQL Server 表进行重复数据删除
【发布时间】:2016-08-29 18:53:44
【问题描述】:

我有一个包含近 100 万行的表,其中有很多我想从中删除的重复数据。我想知道如何做到这一点?

表格列是:用户名、专业化、出生日期、地址、城市、州、邮编和电话。我在表中没有任何唯一 ID。

表中的各行可能有相似的名称和地址。我必须找出所有那些相似的匹配项并删除重复项。

样本数据:

Name              Specialisation     DOB        Address       Country
Alexande Loord    Arts               7/2/1993   #25, Fairfax    US
Alexander L       Arts               7/2/1993   #25,Fairfax,VA  US

在上述情况下,两条记录是相同的,只是名称的形式不同。我已识别此类案例并通过删除重复项为每个用户提供尽可能多的信息来提高我的数据质量。

如何消除此重复数据并在表中为每个用户保留 1 个唯一条目(行)?

提前感谢大家的回复。

【问题讨论】:

    标签: sql sql-server duplicates data-cleaning


    【解决方案1】:

    可能最简单的方法是截断表格并重新填充它。如果您没有唯一键,那么您就没有标识列,因此以下应该可以工作:

    select distinct t.*
    into temp_t
    from t;
    
    truncate table t;
    
    insert into t
        select *
        from temp_t;
    

    注意事项:

    • 这是我在没有列列表的情况下使用 insert 的少数情况之一——这些列是从表中选择的。

    • 我建议你在表被截断后添加一个唯一的标识列:

      alter table t add tId int identity 主键;

    • 在执行此类操作之前,请始终验证数据并备份表(复制内容)。

    【讨论】:

    • 解决方案适用于重复,但问题是关于相似的。在这种情况下,第三方工具可能是合适的。
    猜你喜欢
    • 2021-01-15
    • 2019-12-04
    • 2017-11-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多