2017-11-27 1 views
2

アプリケーションOracle(11g and 12C)では、次のような奇妙な問題に直面しています。Oracle:クエリは正常に実行されましたが、列名は使用できません

Oracle DBで以下のクエリを実行すると、正常に実行され、出力が得られます。

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

しかし、私は一人で、内側のクエリの下に実行すると、エラーがスローされます。

select col2 from table2 ORA-00904: "COL2": invalid identifier

私はテーブルのテーブル2を説明すると、Col2にはありません。エラーは予想されます。しかし、以前のクエリは正常に実行されていますが、これは私の懸念事項です。

答えて

2

いつも、私は常にテーブルエイリアスを与えて使用します。あなたはトラブルに遭遇することはありませんし、このようなシナリオに直面することはありません: は今、私はそれはいくつかのエラーがスローされます確信している、同じDBに再びクエリの下に実行します。

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

今私がしたすべてのテーブルを与えた、気づきますエイリアス。おそらくここで起こっているのは、table1に 'col2'という名前の列があり、サブクエリがそれを参照しているということです。そのため、正常に動作し、エラーは表示されません。

関連する問題