2017-11-27 16 views
2

Oracle(11g and 12C) 애플리케이션에서는 다음과 같은 이상한 문제에 직면하고 있습니다.오라클 : 쿼리가 성공적으로 실행되었지만 열 이름을 사용할 수 없습니다.

Oracle DB에서 아래의 쿼리를 실행하면 성공적으로 실행되어 출력됩니다.

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

하지만 혼자 아래 내부 쿼리를 실행할 때 오류가 발생합니다 :

나는 테이블 표 2를 설명

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

, Col2의이되지 않습니다. 오류가 예상됩니다. 그러나 이전 질의가 성공적으로 수행되었는데 이는 내 관심사입니다. 어떤 사람이이 동작을 설명 할 수 있습니까?

답변

2

항상 항상 테이블 별칭을주고 사용합니다. 당신은 문제로 실행되지 않습니다 및 시나리오에 직면하지 않습니다 지금 같은 DB에 다시 쿼리 아래 실행을, 나는 그것이 약간의 오류가 발생합니다 확신 :

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

지금 통지를, 내가 한 모든 테이블을 제공했다 별칭. 여기서 가장 많이 일어나는 일은 table1에 'col2'라는 열이 있고 하위 쿼리가 해당 열을 참조하는 것입니다. 그것이 정상적으로 실행되고 오류를 나타내지 않는 이유입니다.