【问题标题】:How to replace NOT IN with NOT EXISTS in this code?如何在此代码中用 NOT EXISTS 替换 NOT IN?
【发布时间】:2026-01-03 05:50:01
【问题描述】:

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

我该如何纠正这个错误?我错过了什么重要的东西吗?请帮忙。

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);

【问题讨论】:

    标签: sql oracle oracle11g not-exists notin


    【解决方案1】:

    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
      )
    ;
    

    【讨论】:

      【解决方案2】:

      试试这个:

      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
      

      【讨论】:

      • 谢谢,我很想试试这个,但我特别想在这里用“不存在”替换“不存在”。
      最近更新 更多