본문 바로가기

DB/Oracle

ORA-00918

테이블 조인을 하고 있는데 아래와 같은 오류가 발생하였습니다.

ORA-00918: column ambiguously defined

ORA-00918: 열의 정의가 애매합니다


애매하다니.. 그렇게 애매하게 얘길하면 어떡하노..

ㅋㅋㅋ


테이블 조인 시, 컬럼명을 출력,조건,정렬 등으로 사용할 때

양쪽에 중복되는 컬럼이면 조인되는 테이블 중 어느 테이블의 컬럼인지를 명시해주셔야 합니다.


emp 테이블과 dept 테이블을 조인하는 예를 들어보겠습니다.

select empno,ename,sal,deptno
from emp e, dept d
where e.deptno=d.deptno;


이런식으로 조인을 하겠죠.. 하지만 위의 오류를 뱉어낼 겁니다.

양쪽 테이블에 deptno 이라는 컬럼이 동시에 존재하기 때문입니다.

deptno을 출력해달라고 select 상단에 적어놨지만, 

오라클은 emp 테이블의 deptno을 출력할지, dept 테이블의 deptno을 출력할 지 애매하다는 겁니다. 

그래서 열의 정의가 애매하다는 거죠. 

조인 조건으로 where절에 줬던 e.deptno = d.deptno 도 동일한 의미죠. 구분을 짓기 위해 앞에 alias를 붙인거니까요.


참고로 empno, enmae, sal 컬럼은 문제되지 않습니다. dept 테이블에는 없는 컬럼이거든요.

그래서 오라클이 헷갈릴 일이 없습니다. 하지만 습관적으로 앞에 alias를 붙여주는 것이 좋습니다.


도움이 되시길..

'DB > Oracle' 카테고리의 다른 글

ORA-28001, 오라클 패스워드 만료  (2) 2016.06.30
ORA-28000, 계정 잠금(Lock) 해제  (1) 2016.06.28
ORA-12081, 테이블 read only  (0) 2016.06.24
외래키 조회  (1) 2016.06.22
ORA-02292  (0) 2016.06.22