2012-02-02 119 views
0

我的電話記錄表作爲這樣的:刪除重複記錄而保留一個記錄

ID int (Primary Key) 
company varchar 
dbaname varchar 
coaddress varchar 
cocity varchar 
costate varchar 
cozip varchar 
phonenum varchar 

我想做到的是消除所有重複的電話號碼(PHONENUM場),但保留一個occurence。

在做重複檢查,我看到有在表(共約141000)超過41000重複的電話號碼。

我怎麼會去這樣做此基礎上的電話號碼?

+0

可能重複的[SQL - 如何刪除重複行?](http://stackoverflow.com/questions/18932/sql-how-can-i-remove-duplicate-rows) – 2012-02-02 16:00:47

+0

這可能不是看起來很簡單:公司可能從一個地址移動到另一個地址,但保留相同的電話號碼。所以真正的問題是你寧願扔掉多個地址中的哪一個。 – dasblinkenlight 2012-02-02 16:03:25

+0

@dasblinkenlight - 這是一個很好的觀點。其他任何數據都可能不同,因爲業務可能會移動等。實際上,我並不關心任何其他數據。這是一個撥號器,所以電話號碼本質上是重要的。我不希望多個座席打電話給同一個電話號碼,並通過同一線索互相摸索。 – RogueSpear00 2012-02-02 16:10:22

回答

1

假設你想只保留最新記錄:

DELETE yourTable 
FROM yourTable T 
     LEFT JOIN 
     ( SELECT MAX(ID) [ID] 
      FROM yourTable 
      GROUP BY Phonenum 
     ) MaxT 
      ON MaxT.ID = T.ID 
WHERE MaxT.ID IS NULL 

我肯定會存檔要刪除到另一個表什麼的,雖然沒有保證你無需手動檢查或添加刪除正確記錄刪除語句的更多標準。

+0

在提出問題之前,我已完成備份。很久以前瞭解我的課程! :) – RogueSpear00 2012-02-02 16:52:33