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