在SQL中自我联接表时出现重复行

时间:2018-11-27 06:01:46

标签: sql ms-access

我正在尝试根据“仓库编号”列将一个表自我连接在一起。目的是列出相同物料类别和相同仓库中的任何零件对的零件编号,描述和物料类别。下面是所需输出和起始数据的示例。

开始数据

Starting Data

某些所需数据的示例

desired output

但是,当发生自连接时,没有“精确”重复,但是该对在表中出现两次。

有问题的输出示例(突出显示) PROBLEMS

我尝试了UNION,INNER JOIN和其他联接方法的大多数迭代。因为从技术上讲并不是另一行的精确重复,所以可以删除这些对吗?

当前SQL代码 enter image description here

1 个答案:

答案 0 :(得分:1)

您可以更改加入条件,以检查第一个零件号严格小于第二个零件号:

SELECT
    t1.PARTNUMB, t1.PARTDESC, t1.ITEMCLSS, t2.PARTNUMB, t2.PARTDESC, t2.ITEMCLSS
FROM PARTFIRST t1
INNER JOIN PARTSECOND t2
    ON t1.WRHSNUMB = t2.WRHSNUMB AND
       t1.ITEMCLSS = t2.ITEMCLSS AND
       t1.PARTNUMB < t2.PARTNUMB;

使用FIRST.PARTNUMB <> SECOND.PARTNUMB的问题在于,它将报告两个不同的零件编号,两次是两次,一次在左侧/右侧,反之亦然。通过使用严格小于的不等式,我们排除了您查看“重复项”的情况。

相关问题