从A中获取所有产品,这些产品要么不存在于B中,要么存在B中的库存= 0

时间:2017-05-31 13:06:01

标签: sql oracle

请您帮我构建单个查询以获取以下方案的产品 -
两个表 - Table_A(产品)和表_B(产品和库存) 我需要从表A中获得表B中没有的所有产品,或者如果它们存在于B中,它们在B中的库存= 0.

以下是我试过的 -

SELECT PROD_ID FROM TABLE_A
WHERE PROD_ID NOT IN (SELECT PROD_ID FROM TABLE_B)
OR PROD_ID IN (SELECT PROD_ID FROM TABLE_B WHERE STOCK = 0)

此查询永远运行,因此我不确定它是否提供了正确的输出。如果它是正确的,我会找到优化性能的方法。

1 个答案:

答案 0 :(得分:0)

以下查询中的某些内容应该有效。

select prod_id
from   table_a
where  prod_id not in (select prod_id from table_b where stock > 0)
;

这假设prod_idtable_b被约束为NOT NULL。