在 table 中查找具有不同 ID 的重复记录

Finding duplicate records with different IDs within a table

我有一个 table 如下:

ID     Product#   Service#   ServiceDate
1      100        122        2017-01-02
2      100        124        2017-03-02
3      122        133        2017-04-02        
100    100        122        2017-05-02

我需要找到具有相同产品#和服务#但 ID 不同的记录。为此,我编写了以下代码:

Select * 
FROM MyTable as M1 Inner join 
MyTable as M2 on 
M1.Product#=M2.Product# and M1.Service#=M2.Service# and M1.ID!=M2.ID

但是,我得到这样的重复结果:

ID   Product# Service#  ServiceDate  ID   Product#  Service#  ServiceDate
1    100      122       2017-01-02   100  100       122       2017-05-02 
100  100      122       2017-05-02   1    100       122       2017-01-02

知道如何消除这些重复行吗?我需要看到这样的结果:

  ID   Product# Service#  ServiceDate  ID   Product#  Service#  ServiceDate
  1    100      122       2017-01-02   100  100       122       2017-05-02 

如果您只想 return 没有重复列的两行,请替换

Select *

Select M1.*

尝试以下操作:

Select  * 
FROM MyTable as M1 
Inner join MyTable as M2 on M1.Product#=M2.Product# and M1.Service#=M2.Service# and M1.ID!=M2.ID
where m1.id < m2.id

说明:你的例子展示了每枚硬币的两面;通过将其限制为其中一个 ID 小于另一个,您将自动拥有一半的记录,从而有效地获得所有独特的组合。

奖励:为了好玩,我尝试向您的示例数据集中添加一个重复的行,并且它按预期工作。