본문 바로가기

오류 해결

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

반응형
"ORA-00918: 열의 정의가 애매합니다" 오류가 난 이유
ROW_NUMBER() OVER(ORDER BY $num$ $sord$) AS RNUM
=> 컬럼명을 받아와서 순서를 매기는데, 해당 컬럼이 조인된 테이블 마다 있어 오류가 남.
여러 테이블을 조인할 때, 테이블에 컬럼명이 중복되는지 확인해보자.
ex) SELECT NAME FROM A, B WHERE A.NUM=B.NUM; -- 오류가 남
=> SELECT A.NAME FROM A, B WHERE A.NUM=B.NUM; -- 오류가 나지 않게 정확히 명시

NAME 컬럼이 A나 B 테이블에 둘중 한 테이블에만 있다면 오류가 나지 않지만,
A 테이블에도 NAME 컬럼이 있고, B 테이블에도 NAME 컬럼이 있다면 열의 정의가 애매하다는 오류가 날 수 있다. 쿼리가 짧으면 확인이 쉽지만, 긴 쿼리가 저런 부분을 찾기 힘들 수 있다. 주의하자.

 

참고 URL
 

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

ORA-00918: 열의 정의가 애매합니다 문제 상황 분명 정상적인 쿼리문 같은데, 'ORA-00918: 열의 정의가 애매합니다'와 같은 에러 발생. 문제 원인 어느 테이블의 컬럼인지 정확하게 파악이 안되는 경우

insomniachaos.tistory.com

 

반응형