在 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 小于另一个,您将自动拥有一半的记录,从而有效地获得所有独特的组合。
奖励:为了好玩,我尝试向您的示例数据集中添加一个重复的行,并且它按预期工作。
我有一个 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 小于另一个,您将自动拥有一半的记录,从而有效地获得所有独特的组合。
奖励:为了好玩,我尝试向您的示例数据集中添加一个重复的行,并且它按预期工作。