加入收藏 | 设为首页 | 会员中心 | 我要投稿 宿州站长网 (https://www.0557zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长百科 > 正文

Oracle SQL Query在12C但不在11g中工作

发布时间:2021-01-25 19:28:33 所属栏目:站长百科 来源:网络整理
导读:我有一个Oracle SQL查询在12C中工作正常,但在11g中没有.我在下面给出了一个类似的例子.请解释这是否是12C中修复的错误/增强功能. CREATE TABLE MSI_OWNER.VINOTH_TEST1( COL1 VARCHAR2(100 BYTE),SAL NUMBER,YEAR NUMBER)Insert into MSI_OWNER.VINOTH_TES

我有一个Oracle SQL查询在12C中工作正常,但在11g中没有.我在下面给出了一个类似的例子.请解释这是否是12C中修复的错误/增强功能.

CREATE TABLE MSI_OWNER.VINOTH_TEST1
(
  COL1  VARCHAR2(100 BYTE),SAL   NUMBER,YEAR  NUMBER
)

Insert into MSI_OWNER.VINOTH_TEST1   (COL1,SAL,YEAR) Values   ('Vinoth',100,1);
Insert into MSI_OWNER.VINOTH_TEST1   (COL1,2);
COMMIT;

  SELECT col1,(SELECT MAX (its)
            FROM (SELECT MAX (year) its
                    FROM vinoth_test1 x
                   WHERE x.col1 = a.col1))
            max_year,sal
    FROM vinoth_test1 a
GROUP BY col1,sal

请注意,我已经写了一个不同的逻辑来解决这个问题,但我想知道这是11g中的错误还是12C中的增强.

Error in 11g: ORA-00904: "A"."COL1": invalid identifier

解决方法

Oracle文档始终明确表示只允许一个级别的关联(尽管没有明确的原因,并且它违反了SQL标准).

正如其中一位大师Solomon Yakobson在OTN上多次解释,在每个新版本中,在子版本1中(如10.1,11.1),更深层次的关联工作正常,就像OP注意到的那样.它曾经在子版本2(10.2,11.2)中被“修复”(灵活性被收回). 12.1具有相同的“增强”(所有级别的相关性),12.2没有把它拿走 – 尽管文档STILL表示相关性不允许超过一个级别.特别是因为当我们使用WITH子句编写查询时不存在这样的限制,因此Oracle继续使用该限制是没有意义的.

https://docs.oracle.com/database/122/SQLRF/Using-Subqueries.htm#SQLRF52357

当嵌套子查询引用一个表中的一个列时,Oracle执行一个相关子查询,该表引用一个父语句,该语句高于子查询一级[…]

(编辑:宿州站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读