我有一张表格如下:
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
答案 0 :(得分:1)
尝试以下方法:
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小于另一个,您将自动只有一半的记录,有效地获得所有独特的组合。
加分:为了好玩,我尝试在您的示例数据集中添加一个重复的行,并且它按预期工作。
答案 1 :(得分:0)
如果您只想返回没有重复列的两行,请替换
Select *
带
Select M1.*