列表和表格很少,如下所示:
注意:所用元素的名称仅用于说明目的。
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 子句中的某个地方。可能导致错误的原因是什么?
答案 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列。