在表格中找到重复的行“详细信息”

时间:2011-02-08 10:37:28

标签: tsql sql-server-2008 count duplicate-removal

OrderId  OrderCode  Description
-------------------------------
1        Z123       Stuff
2        ABC999     Things
3        Z123       Stuff

我在上表中有重复项。我正在尝试获取哪些订单是重复的报告,以及它们重复的顺序,因此我可以弄清楚它们是如何进入数据库的。

理想情况下,我希望获得类似的输出

OrderId    IsDuplicatedBy
-------------------------
1          3
3          1

我无法弄清楚如何在SQL中编写代码。

1 个答案:

答案 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