2013-10-29 58 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;