我有一个包含列的表:
FirstName
LastName
AddressLine1
AddressLine2
City
State
对于每一行,AddressLine1
与AddressLine2
值不同。但是有一些重复的行,其中一些记录的AddressLine1
与其他记录的AddressLine2
匹配。
我想摆脱上面提到的这些记录。
答案 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或名称,或者将来可以轻松识别的内容。然后你可以根据需要手动删除。或者根据需要将以下内容修改为UPDATE
或DELETE
语句。
SELECT
t1.UNIQUE_IDENTIFIER,
t2.UNIQUE_IDENTIFIER
FROM
table t1,
table t2
WHERE
t1.AddressLine1 = t2.AddressLine2