重复删除SQL Server表
我有一个几乎有一百万行的表,其中有很多重复的数据,我想从中删除。我想知道到底该怎么做 表格列为:用户名、专业化、dob、地址、城市、州、邮政编码和电话。我在表中没有唯一的ID 表中各行可能有类似的名称和地址。我必须识别所有类似的匹配项并删除重复项 样本数据:重复删除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
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主键
- 在执行此类操作之前,请始终验证数据并备份表(复制内容)