2011-12-13 161 views
1

可能重複:
How Do You Delete Duplicate Records In SQLSQL查詢來擺脫重複記錄

我有列的表格:

FirstName 
LastName 
AddressLine1 
AddressLine2 
City 
State 

對於每一行,AddressLine1是不同的來自AddressLine2的值。但是有一些重複行,其中某些記錄的AddressLine1與某些其他記錄的AddressLine2匹配。

我想擺脫上面提到的這樣的記錄。

+0

到目前爲止你有什麼想法嗎?另外,如果一條記錄的AddressLine1與另一條記錄的AddressLine2相匹配,但FirstName或City或State是不同的呢? – marnir 2011-12-13 21:37:15

+0

also http://stackoverflow.com/questions/841447/delete-duplicate-sql-records – JNK 2011-12-13 21:37:44

+0

有沒有主鍵?這將使聲明更小... – Randy 2011-12-13 21:38:10

回答

2

這將讓所有重複的記錄:

SELECT P.* 
FROM table P INNER JOIN 
    table S ON P.FirstName = S.FirstName 
      AND P.LastName = S.LastName 
WHERE P.AddressLine1 = S.AddressLine2 

如果你的表有,你可以寫一個刪除刪除這樣重複的ID:

DELETE FROM table 
WHERE Id IN (
    SELECT P.Id 
    FROM table P INNER JOIN 
     table S ON P.FirstName = S.FirstName 
       AND P.LastName = S.LastName 
    WHERE P.AddressLine1 = S.AddressLine2 
) 
1

將表與自身

DELETE a 
FROM Table a 
JOIN Table b 
    ON a.AddressLine1 = b.AddressLine2 
0

用一些ID或名稱替換UNIQUE_IDENTIFIER或者您可以輕鬆識別在未來。然後您可以根據需要手動刪除。或者根據需要修改下面的內容到UPDATEDELETE聲明中。

SELECT 
    t1.UNIQUE_IDENTIFIER, 
    t2.UNIQUE_IDENTIFIER 
FROM 
    table t1, 
    table t2 
WHERE 
    t1.AddressLine1 = t2.AddressLine2