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

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

所以理想情况下,我想得到类似的输出;

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

我不知道如何在 SQL 中编写代码。

4

1 回答 1

2

您可以在一个查询中使用同一张表两次,并加入您需要检查的字段。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

结果:

OrderID IsDuplicatedBy
1   3
3   1
于 2011-02-08T10:43:44.327 回答