我试图在两个不同的列中找到重复项

时间:2013-08-05 10:33:49

标签: sql oracle

我有这个简单的查询:

Select product_code, ID1, ID2 from product_list

但我有一个问题

product_code只有一个唯一的代码,而ID1ID2也有product_code,所以一个不同的产品, 1个不同的ID1和1个不同的产品ID2,

但是当我提取列表时,有时我注意到为product_code X显示的ID1也显示为product_code Y ID2,反之亦然,对我来说无论如何都有查询来检测这个?

非常感谢

2 个答案:

答案 0 :(得分:0)

类似的东西:

SELECT *
FROM product_list
WHERE product_code = ID1 OR product_code = ID2 OR (ID1 = ID2 AND ID1 IS NOT NULL)

添加了NULL检查,但可能不需要。

SELECT *
FROM product_list a
WHERE EXISTS (SELECT *
              FROM product_list b
              WHERE a.product_code = b.ID1 OR a.product_code = b.ID2
              OR a.ID1 = b.ID2)

答案 1 :(得分:0)

因此,如果我理解正确,ID1字段中的某些值也会出现在ID2字段中,但是对于不同的product_code。

Select p1.product_code, p1.ID1, p1.ID2, p2.product_code, p2.ID1, p2.ID2
from product_list p1, product_list p2
where p1.ID1 = p2.ID2 or p1.ID2 = p2.ID1