SQL Query以摆脱重复记录

时间:2011-12-13 21:34:06

标签: sql

  

可能重复:
  How Do You Delete Duplicate Records In SQL

我有一个包含列的表:

FirstName
LastName
AddressLine1
AddressLine2
City
State

对于每一行,AddressLine1AddressLine2值不同。但是有一些重复的行,其中一些记录的AddressLine1与其他记录的AddressLine2匹配。

我想摆脱上面提到的这些记录。

3 个答案:

答案 0 :(得分: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 :(得分:1)

将表加入自身

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

答案 2 :(得分:0)

UNIQUE_IDENTIFIER换成一些ID或名称,或者将来可以轻松识别的内容。然后你可以根据需要手动删除。或者根据需要将以下内容修改为UPDATEDELETE语句。

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