在我们的应用程序Oracle(11g和12C)
中,我面临一个奇怪的问题,如下所示。
当我在 Oracle 数据库中运行以下查询时,它成功运行并给出输出。
select * from table1 where col1 in (select col2 from table2 ) ;
但是当我单独运行下面的内部查询时,它会抛出错误:
select col2 from table2 ORA-00904: "COL2": invalid identifier
当我描述表table2时,Col2不存在。该错误是预期的。但上一个查询执行成功,这是我关心的问题。有人可以向我解释一下这种行为吗?
最佳答案
总是,我重复一遍总是给出和使用表别名。你永远不会遇到麻烦,也不会遇到这样的场景: 现在在同一个数据库中再次运行下面的查询,我确信它会抛出一些错误:
select * from table1 a where a.col1 in (select b.col2 from table2 b) ;
现在请注意,我所做的只是给出表别名。这里最可能发生的情况是 table1 有一个名为“col2”的列,并且子查询正在引用该列。这就是为什么它运行良好并且没有显示任何错误。
关于sql - Oracle : Query Runs Successfully, 但列名不可用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47509773/