2013-10-29 54 views
0

我有一张叫users的表格,它有first namelast name,我想保留一个记录,同一个first namelast name,其他记录将被丢弃。如何使用SQL删除重复的不唯一数据?

例如:执行SQL

first name: Peter last name: White 
first name: Mary last name: White 
first name: John last name: Brown 
first name: Peter last name: White 

后:

first name: Peter last name: White 
first name: Mary last name: White 
first name: John last name: Brown 
+0

第1步 - 决定要保留的记录以及原因。 –

+0

第一次出现保持,其余的删除。由于该程序有一个错误,它会在数据库中写入更多数据。所以,需要从数据库中删除。 – DNB5brims

+0

你如何定义第一个?这些记录是否有时间戳?是否有一个自动增量主键? –

回答

2

的SQL Server的一个很好的功能是使用热膨胀系数的更新,插入的能力,并删除。以下是一种方法:

with fordeletion as (
     select t.*, 
      row_number() over (partition by fname, lname order by (select NULL)) as seqnum 
     from t 
    ) 
delete from fordeletion 
    where seqnum > 1;