如何在此代码中将NOT IN替换为NOT EXISTS?

时间:2014-12-22 18:29:18

标签: sql oracle oracle11g not-exists notin

我在下面的代码中只尝试用NOT EXISTS替换NOT IN运算符。 但是,它给了我一个"无效的关系运算符错误"。

如何更正此错误?我错过了重要的事吗?请帮忙。

SELECT DISTINCT 'v1',
                   'v2',
                   f.apples,
                   f.bananas,
                   f.oranges     
FROM fruits f
     WHERE f.code = 'F1' 
     AND f.buyer_fruit_code
     NOT EXISTS
             (SELECT c.color_code
                FROM colors c);

2 个答案:

答案 0 :(得分:2)

NOT IN运算符意味着与NOT EXISTS子句不同的东西。除其他事项外,NOT EXISTS不是运营商。也许你想要这样的东西:

SELECT DISTINCT 'v1',
               'v2',
               f.apples,
               f.bananas,
               f.oranges     
FROM fruits f
WHERE
  f.code = 'F1' 
  AND NOT EXISTS (
    SELECT c.color_code
    FROM colors c
    WHERE c.color_code = f.buyer_fruit_code
  )
;

答案 1 :(得分:0)

请改为尝试:

SELECT DISTINCT 'v1',
                       'v2',
                       f.apples,
                       f.bananas,
                       f.oranges     
    FROM fruits f
    LEFT JOIN color_code c ON f.fruit_code=c.color_code
         WHERE f.code = 'F1' 
         AND c.color_code is NULL
相关问题