2

有很少的列和表,如下:

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

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子句中的某个地方。什么可能导致错误?

4

1 回答 1

7

Oracle 中没有EXCEPT运算符。改为使用MINUS。参考:这里

在您的查询中,“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));

请注意,我已更改*col1for Table2- 如果您从中选择单个 INT 列TT.col1TT那么您还应该从中选择单个 INT 列Table2

于 2012-02-19T16:10:49.540 回答