Oracle - 错误除外

发布于 2025-01-07 09:57:25 字数 393 浏览 1 评论 0原文

有很少的列和表,如下所示:

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

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 子句中。可能是什么导致了错误?

Have few columns and tables, as follows:

NOTE: The names of elements used are for illustrative purposes only.

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

Error: Missing right parenthesis, though the parentheses seem to match.

But, I do know that it has nothing to do with the parenthesis actually. And I suspect the error to be somewhere in the EXCEPT clause. What might have resulted in the error?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

惟欲睡 2025-01-14 09:57:25

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

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

There's no EXCEPT operator in Oracle. Use MINUS instead. Reference: Here

In your query the word 'EXCEPT' is most probably treated as a table alias for (SELECT * FROM Table2) subquery.

UPDATE:

Full query for provided data structure will look like:

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

Note that I have changed * to col1 for Table2 - if you're selecting single INT column TT.col1 from TT then you should also select single INT column from Table2.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文