使用复合键的减号运算符

时间:2014-02-11 12:23:05

标签: sql oracle

我正在编写一个查询来过滤一些记录,但没有得到如何实现这一点。以下是标准。

我有一张表xRef,其中没有。使用marketId,promoId,dcId,refId的列。在表格中,marketIdpromoIddcIdrefId复合键。

这意味着那里可以是多个记录,这些记录可能与promoIdmarketId相同但dcId不同。

现在我有2个dcIds例如10和15并且这些DC都有表中的rocords。
现在我需要所有记录

  1. 其中dcId = 10且
  2. promoId,dcId-15表中不存在marketId和refId。
  3. 我尝试使用MINUS运算符,但因为它是复合键,我无法使用它。我也尝试了NOT EXISTS,但它没有用。可能是我没有以正确的方式使用。

    由于我不是数据库人,因此无法找到最终解决方案。所以我需要像你这样的专家的帮助。你能帮我解决一下这个问题吗?

1 个答案:

答案 0 :(得分:1)

这个查询可能是您正在寻找的内容:

SELECT * FROM xRef t1
WHERE t1.dcId = 10
      AND NOT EXISTS (SELECT dcId FROM xRef t2
                      WHERE t1.promoId = t2.promoId
                            AND t1.marketId = t2.marketId
                            AND t1.refId = t2.refId
                            AND t2.dcId = 15)