
ORA-00918: 열의 정의가 애매합니다.
"column ambiguously defined"
이 오류는 쿼리를 작성해 본 실무자나 학부생이라면 누구든 한 번은 무조건 봤을만한 문구이다.
바로 열의 정의가 애매(모호)하다는 것인데, 컬럼명이 중복돼 있을 때 오류를 출력한다.
주로 조인(JOIN)이나 서브쿼리를 작성할 때 자주 보이는 오류이다.
그럼 'ORA-00918: 열의 정의가 애매합니다.' 라는 오류는 언제 발생하는지 아래의 예시를 확인해 보자.
-- 코드를 입력하세요
SELECT A.REST_ID, A.REST_NAME, A.FOOD_TYPE, A.FAVORITES, A.ADDRESS, ROUND(AVG(A.REVIEW_SCORE), 2) AS SCORE
FROM (SELECT INFO.REST_ID,
INFO.REST_NAME,
INFO.FOOD_TYPE,
INFO.FAVORITES,
INFO.ADDRESS,
REVIEW.REVIEW_SCORE,
INFO.REST_NAME
FROM REST_INFO INFO,
REST_REVIEW REVIEW
WHERE INFO.REST_ID = REVIEW.REST_ID) A
WHERE A.ADDRESS LIKE '서울%'
GROUP BY A.REST_ID, A.REST_NAME, A.FOOD_TYPE, A.FAVORITES, A.ADDRESS
ORDER BY SCORE DESC, FAVORITES DESC
위의 쿼리를 실행할 경우 'ORA-00918: column ambiguously defined' 오류가 출력된다.
FROM 서브쿼리를 살펴보면 INFO.REST_NAME 컬럼이 두 번 작성된 걸 볼 수 있는데 생각보다 실무에 투입되어 바삐 업무를 진행하다 보면 이렇게 생각지도 못한 일들이 많이 발생한다!
위의 경우 외의 해당 오류가 발생한다면 그것은 작성한 컬럼에 대해서 명확한 앨리어스 표기를 안 했을 때인데, 이 경우도 어떤 테이블의 어떤 컬럼을 조회하는지 명시해 주면 간단하게 오류를 해결할 수 있다.
여러 번 검수하고, 확인하고, 테스트해봐야 한다. 이건 너무너무 중요한 거다. 반영했는데 생각지도 못한 곳에서 구멍이 숭숭.. 오류가 빵빵! 난다면.. 어흐..
주니어 개발자 시절부터 좋은 습관을 만들어 놓는 게 중요한 거 같다.
난 그러지 못했.. 던 거 같기도 하고..
-- 코드를 입력하세요
SELECT A.REST_ID, A.REST_NAME, A.FOOD_TYPE, A.FAVORITES, A.ADDRESS, ROUND(AVG(A.REVIEW_SCORE), 2) AS SCORE
FROM (SELECT INFO.REST_ID,
INFO.REST_NAME,
INFO.FOOD_TYPE,
INFO.FAVORITES,
INFO.ADDRESS,
REVIEW.REVIEW_SCORE
FROM REST_INFO INFO,
REST_REVIEW REVIEW
WHERE INFO.REST_ID = REVIEW.REST_ID) A
WHERE A.ADDRESS LIKE '서울%'
GROUP BY A.REST_ID, A.REST_NAME, A.FOOD_TYPE, A.FAVORITES, A.ADDRESS
ORDER BY SCORE DESC, FAVORITES DESC
위와 같이 중복으로 작성한 컬럼을 제거하고 확인해 보면 ORA-00918 오류는 발생하지 않는다!
끗
반응형
'Database > Oracle' 카테고리의 다른 글
| [Oracle | 오라클] ORA-00938: 함수의 인수가 충분하지 않습니다. / not enough arguments for function (0) | 2025.06.09 |
|---|---|
| [Oracle | 오라클] ORA-01502 : 인덱스 'INDEX명'또는 인덱스 분할영역은 사용할 수 없은(없는) 상태입니다 오류 해결 (0) | 2024.02.23 |
| [Oracle | 오라클] ORA-00904 : 부적합한 식별자 오류 (0) | 2022.08.29 |
| [Oracle | 오라클] ORA-01756 : 단일 인용부를 지정해 주십시오 오류 (0) | 2022.08.18 |
| [Oracle | 오라클] ORA-00979 : GROUP BY 표현식이 아닙니다. (0) | 2022.08.16 |