重新编写SQL Server表

时间:2016-05-04 11:04:22

标签: sql sql-server duplicates data-cleaning

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

表格列为:用户名,专业化,dob,地址,城市,州,邮政编码和电话。我在表格中没有任何唯一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个唯一条目(行)?

提前感谢您的回复。

1 个答案:

答案 0 :(得分:2)

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

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 primary key;

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