sql - Oracle : Query Runs Successfully, 但列名不可用

标签 sql oracle oracle11g oracle12c

在我们的应用程序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/

相关文章:

sql - Eloquent Laravel Where And Or And

php - 加入或添加专栏?

oracle - 如何将这些儒略日期转换为 oracle 日期格式?

java - 将结果集转换为字符串数组

java - 如何在 oracle 11g 快捷版中创建新数据库?

sql - 从表中选择 MIN 和 MAX 比预期的要慢

mysql查询匹配字符串数组与数据库

java - 通过Java从Lotus Notes数据库 View 中检索数据

c# - EntityFramework 插入 Oracle 表,序列为 PK

java - Oracle PoolDataSource 在 commit() 之前让 DB 游标保持打开状态,这是预期的行为吗?