Oracle - EXCEPT错误

时间:2012-02-19 16:05:22

标签: oracle select except

列表和表格很少,如下所示:

注意:所用元素的名称仅用于说明目的。

SELECT T.col1 
FROM Table1 T 
WHERE NOT EXISTS (
   (SELECT * FROM Table2) 
     EXCEPT (SELECT TT.col1 
             FROM TableTT TT 
             WHERE TT.col2 = T.col2)
     );

错误:缺少右括号,但括号似乎匹配。

但是,我确实知道它实际上与括号无关。我怀疑错误是在 EXCEPT 子句中的某个地方。可能导致错误的原因是什么?

1 个答案:

答案 0 :(得分:7)

Oracle中没有EXCEPT运算符。请改用MINUS。参考:Here

在您的查询中,“EXCEPT”这个词很可能被视为(SELECT * FROM Table2)子查询的表别名。

<强>更新

对提供的数据结构的完整查询如下所示:

SELECT T.col1 
FROM Table1 T 
WHERE NOT EXISTS 
((SELECT col1 FROM Table2) 
MINUS 
(SELECT TT.col1 FROM TableTT TT WHERE TT.col2 = T.col2));

请注意,*已将col1更改为Table2 - 如果您从TT.col1选择单个INT列TT,那么您还应该选择来自Table2的单个INT列。