【问题标题】:Oracle : Query Runs Successfully, but the column name is not availableOracle:查询运行成功,但列名不可用
【发布时间】:2018-05-10 14:57:30
【问题描述】:

在我们的应用程序Oracle(11g and 12C) 中,我遇到了一个奇怪的问题,如下所示。

当我在Oracle DB 中运行以下查询时,它会成功运行并给我输出。

   select * from table1 where  col1  in (select col2 from table2 ) ;

但是当我单独运行下面的内部查询时,它会抛出错误:

从 table2 ORA-00904 中选择 col2:“COL2”:无效标识符

当我描述表 table2 时,Col2 不存在。该错误是预期的。但是上一个查询成功执行,这是我关心的问题。有人可以解释一下这种行为吗?

【问题讨论】:

    标签: sql oracle oracle11g oracle12c


    【解决方案1】:

    总是,我重复总是给予和使用表别名。你永远不会遇到麻烦,也不会面对这样的场景: 现在在同一个数据库中再次运行下面的查询,我相信它会抛出一些错误:

    select * from table1 a where  a.col1  in (select b.col2 from table2 b) ;
    

    现在请注意,我所做的只是给表格别名。这里最有可能发生的是 table1 有一个名为 'col2' 的列,而子查询正在引用该列。这就是它运行良好并且没有显示任何错误的原因。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-08-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多