代码之家  ›  专栏  ›  技术社区  ›  jva

使用ansi联接时子查询中的where条件

  •  1
  • jva  · 技术社区  · 15 年前

    为什么不起作用?

    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 Enterprise Edition 9.2.0.8.0版-64位产品

    以下内容执行得很好:

    SELECT a.*
    FROM dual a
         JOIN (SELECT * FROM dual /*WHERE 1=1*/) b
         ON (1=1)
    
    4 回复  |  直到 14 年前
        1
  •  1
  •   DCookie    15 年前

    它适用于我在9.2(32位版本是唯一的区别):

    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
    
        2
  •  1
  •   Thilo    15 年前

    您使用的是什么版本?

    对于我来说,完全相同的SQL工作正常(Oracle Database 10g Express Edition 10.2.0.1.0版)。

        3
  •  1
  •   Quassnoi    15 年前

    甲骨文下面 9i 不支持 ANSI 连接语法。

    如果你在,就用这个 8i 及以下:

    SELECT  a.*
    FROM    dual a,
            (
            SELECT  *
            FROM    dual
            WHERE   1 = 1
            ) b
    WHERE   1 = 1
    
        4
  •  0
  •   pedromarce    15 年前

    它看起来对我来说是正确的,我可以在10g中执行它,但是它在8i中失败了,您使用的是哪个版本的Oracle?

    推荐文章