Oracle 使用ANSI联接时子查询中的WHERE条件
为什么不起作用Oracle 使用ANSI联接时子查询中的WHERE条件,oracle,join,ansi,ora-00900,Oracle,Join,Ansi,Ora 00900,为什么不起作用 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 *
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)
你用的是什么版本
完全相同的SQL适合我(Oracle Database 10g Express Edition Release 10.2.0.1.0)。它在我看来是正确的,我可以在10g中执行它,但在8i中失败,您使用的是哪一版本的Oracle?下面的Oracle
9i
不支持ANSI
join语法
如果您在8i
及以下位置,请使用此选项:
SELECT a.*
FROM dual a,
(
SELECT *
FROM dual
WHERE 1 = 1
) b
WHERE 1 = 1
它适用于我的9.2版本(32位版本是唯一的区别):
Oracle的哪个版本?我刚刚在Oracle 10g上尝试了这个查询,结果很好。我编辑了这个问题,以表明我的版本(9.2)支持ANSI连接,但不支持这个特定的连接。这就是解决我问题的方法。原来这是SQL Navigator中的一个bug。在SQL*Plus中运行良好。
SQL> SELECT a.*
2 FROM dual a
3 JOIN (SELECT * FROM dual WHERE 1=1) b
4 ON (1=1);
D
-
X
SQL> quit
Disconnected from Oracle9i Enterprise Edition Release 9.2.0.8.0 - Production
With the OLAP and Oracle Data Mining options
JServer Release 9.2.0.8.0 - Production