我有2张桌子(主人和孩子)
主表(人)
PersonID名称年龄SSN
1 Saurabh 12 1234
2 Saurabh 13 1234
3 Saurabh 14 4567
子表(订单)
订单ID |是PersonID |的ItemID |数量
1 1 1 1
2 1 2 1
3 2 1 1
4 2 2 1
5 3 1 1
我需要根据以下重复数据删除条件删除人员表中的所有重复记录。如果他们具有相同的名称,SSN和订单,则他们是重复的。在此示例中,ID为1和2的人员是重复的,因为他们具有相同的名称(Saurabh),SSN(1234)和订单。
在单个表格上执行重复数据删除很容易,但如果您有父子关系,我就无法获得有效的方法。
答案 0 :(得分:1)
我相信以下内容会为您提供您正在寻找的结果。我会在没有删除部分的情况下运行查询并验证结果。
DELETE FROM Person WHERE PersonID IN
(
SELECT P.PersonID
FROM Person AS P
INNER JOIN [Order] AS O
ON P.PersonID = O.PersonID
WHERE P.PersonID IN
(
SELECT IP.PersonID
FROM Person AS IP
INNER JOIN [Order] AS IO
ON IP.PersonID = IO.PersonID
WHERE IP.PersonID <> P.PersonID
AND IP.Name = P.Name
AND IP.SSN = P.SSN
AND O.ItemID = IO.ItemID
AND O.Quantity = IO.Quantity
)
)