使用 ANSI 连接时子查询中的 WHERE 条件
为什么不起作用?
SELECT a.*
FROM dual a
JOIN (SELECT * FROM dual WHERE 1=1) b
ON (1=1);
我收到“ORA-00900:无效的 SQL 语句”。 有没有办法在子查询中使用 WHERE 子句?
编辑:版本 9.2
SELECT *
FROM v$version
Oracle9i 企业版版本 9.2.0.8.0 - 64 位生产
以下执行得很好:
SELECT a.*
FROM dual a
JOIN (SELECT * FROM dual /*WHERE 1=1*/) b
ON (1=1)
Why doesn't it work?
SELECT a.*
FROM dual a
JOIN (SELECT * FROM dual WHERE 1=1) b
ON (1=1);
I get "ORA-00900: invalid SQL statement".
Is there a way to use WHERE clause inside the subquery?
Edit: Version 9.2
SELECT *
FROM v$version
Oracle9i Enterprise Edition Release 9.2.0.8.0 - 64bit Production
The following executes just fine:
SELECT a.*
FROM dual a
JOIN (SELECT * FROM dual /*WHERE 1=1*/) b
ON (1=1)
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
它适用于我的 9.2(32 位版本是唯一的区别):
It works for me on 9.2 (32 bit version is the only difference):
您使用什么版本?
完全相同的 SQL 对我来说效果很好(Oracle Database 10g Express Edition Release 10.2.0.1.0)。
What version are you using?
The exact same SQL works fine for me (Oracle Database 10g Express Edition Release 10.2.0.1.0).
9i
以下的 Oracle 不支持ANSI
连接语法。如果您使用的是
8i
及更低版本,请使用此选项:Oracle below
9i
does not supportANSI
join syntax.Use this if you're on
8i
and below:对我来说它看起来是正确的,我能够在 10g 中执行它,但在 8i 中失败,您使用的是哪个版本的 Oracle?
It looks correct to me and I am able to execute it in 10g, but it fails with 8i, which version of Oracle are you using?