Oracle:查询成功运行,但列名称不可用

时间:2017-11-27 11:20:41

标签: sql oracle oracle11g oracle12c

在我们的申请stack(unlist(country)) # values ind #1 5 CAM #2 1 TJK #3 7 SEN 中,我面临着如下的奇怪问题。

当我在Oracle(11g and 12C)数据库中运行以下查询时,它成功运行并为我提供输出。

Oracle

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

  

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

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

1 个答案:

答案 0 :(得分:2)

总是,我重复总是给出并使用表别名。你永远不会遇到麻烦,也不会遇到这样的情况: 现在在同一个DB中再次运行以下查询,我确定它会抛出一些错误:

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

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