重复删除SQL Server表

重复删除SQL Server表,sql,sql-server,duplicates,data-cleaning,Sql,Sql Server,Duplicates,Data Cleaning,我有一个几乎有一百万行的表,其中有很多重复的数据,我想从中删除。我想知道到底该怎么做 表格列为:用户名、专业化、dob、地址、城市、州、邮政编码和电话。我在表中没有唯一的ID 表中各行可能有类似的名称和地址。我必须识别所有类似的匹配项并删除重复项 样本数据: Name Specialisation DOB Address Country Alexande Loord Arts 7/2/1993 #2

我有一个几乎有一百万行的表,其中有很多重复的数据,我想从中删除。我想知道到底该怎么做

表格列为:用户名、专业化、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
在上述情况下,两个记录相同,但只有名称的形式不同。我已经确定了此类情况,并通过删除重复项为每个用户提供尽可能多的信息来提高数据质量

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


提前感谢大家的回复。

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

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主键

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


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

      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主键

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


      解决方案适用于重复项,但问题在于相似项。在这种情况下,第三方工具可能是合适的。解决方案适用于重复项,但问题是类似项。在这种情况下,第三方工具可能是合适的。