OrderId OrderCode Description
-------------------------------
1 Z123 Stuff
2 ABC999 Things
3 Z123 Stuff
我在上表中有重复项。我正在尝试获取哪些订单是重复的报告,以及它们重复的顺序,因此我可以弄清楚它们是如何进入数据库的。
理想情况下,我希望获得类似的输出
OrderId IsDuplicatedBy
-------------------------
1 3
3 1
我无法弄清楚如何在SQL中编写代码。
答案 0 :(得分:2)
您可以在一个查询中两次使用同一个表,并加入您需要检查的字段。 <{1}}需要找不到同一行的副本。
T1.OrderID <> T2.OrderID
结果:
declare @T table (OrderID int, OrderCode varchar(10), Description varchar(50))
insert into @T values
(1, 'Z123', 'Stuff'),
(2, 'ABC999', 'Things'),
(3, 'Z123', 'Stuff')
select
T1.OrderID,
T2.OrderID as IsDuplicatedBy
from @T as T1
inner join @T as T2
on T1.OrderCode = T2.OrderCode and
T1.Description = T2.Description and
T1.OrderID <> T2.OrderID