2011-12-13 95 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