Column '%s' in %s is ambiguous
MySQL 오류 1052에서 열 참조가 모호할 때 표시되는 메시지의 확인 및 쿼리 수정 방법입니다.
빠른 답변
- 우선 확인할 원인
- 이 메시지는 쿼리의 열 참조가 적절히 한정되지 않아 모호할 가능성이 있음을 뜻하며, 해당 열에 적절한 테이블 이름을 지정하거나 한정이 필요 없는 쿼리로 수정합니다.
- 먼저 확인할 항목
- 오류 번호가 1052인지 확인합니다.
- 적용 범위
- 현재 증상과 본문에 적은 관찰 조건이 함께 확인된 경우
- 출처 확인일
- 2026-07-30
- 최종 검토
- 2026-07-24
- 수정일
- 2026-07-27
- 정정 이력
- 2026-07-29 이후 기록 없음
- 관련 기술
현재 증상
- 애플리케이션 오류 메시지
먼저 확인할 항목
오류 번호가 1052인지 확인합니다.
SQLSTATE가 23000인지 확인합니다.
표시된 메시지가 `Column '<열 이름>' in <열 위치> is ambiguous` 형식과 일치하는지 확인합니다.
오류 메시지의 열 위치가 `field list` 또는 `on clause`인지 확인합니다.
환경별 원인과 조치
MySQL 오류 1052(심볼 ER_NON_UNIQ_ERROR, SQLSTATE 23000)의 메시지 형식입니다. MySQL은 이 오류가 SELECT 목록이나 ON 절처럼 쿼리 안의 열 참조가 적절히 한정되지 않았을 때 발생할 가능성을 설명합니다.
확인
현재 화면이나 클라이언트 출력에서 오류 번호가 1052이고 SQLSTATE가 23000인지 확인합니다. 이어서 메시지가 Column '<열 이름>' in <열 위치> is ambiguous 형식과 일치하는지 확인합니다. 열 위치에는 field list 또는 on clause가 표시될 수 있습니다.
수정
모호한 열을 참조한 위치에서 열 이름 앞에 적절한 테이블 이름을 지정합니다. 예를 들어 자기 조인에서 i가 모호하면 t2.i처럼 참조할 테이블을 명시합니다.
열 한정이 필요 없도록 쿼리를 수정할 수도 있습니다. MySQL은 동일한 열을 기준으로 조인하는 경우 ON i = i 대신 USING (i)를 사용하는 예를 제시합니다.
출처
MySQL 8.0 Server Error Message Reference (새 창에서 열림)
진단 기록
먼저 문제가 발생한 URL 또는 화면, 표시 시각, 사용한 플랫폼과 배포 버전을 기록합니다. 화면과 로그에서 오류 문자열이 일부만 보이면 앞뒤 문장을 포함해 원문을 보존하고, 민감한 값은 가립니다.
다음 순서로 관찰값을 대조합니다.
- 오류 번호가 1052인지 확인합니다.
- SQLSTATE가 23000인지 확인합니다.
- 표시된 메시지가
Column '<열 이름>' in <열 위치> is ambiguous형식과 일치하는지 확인합니다. - 오류 메시지의 열 위치가
field list또는on clause인지 확인합니다.
각 항목은 확인한 값과 확인하지 못한 이유를 함께 기록해야 합니다. 이 문서의 조건과 실제 관찰값이 다르면 원인을 단정하지 말고, 문제 해결 시작 가이드에서 더 넓은 분기를 선택하십시오.
판정 기준
오류 문자열이 일치한다는 사실만으로 원인이 확정되지는 않습니다. 같은 문구가 여러 환경에서 나타날 수 있으므로 웹서버·런타임·운영체제·최근 변경 사항을 함께 비교합니다. 한 단계에서 기대한 값이 나오지 않으면 다음 단계로 넘어가지 말고 해당 환경의 공식 문서를 우선 확인합니다.
안전한 다음 단계
검사 전에 백업과 변경 이력을 확인하고, 비밀번호·세션 쿠키·인증 토큰·개인정보를 공개 로그나 문의 내용에 넣지 않습니다. 설정·권한·데이터를 변경해야 한다면 영향 범위와 되돌리는 방법을 먼저 기록한 뒤 운영 시간과 승인 절차에 맞춰 진행합니다.
원인 분포
[Observation] 관측된 사례 기준으로 확인된 원인은 다음과 같습니다.
| 원인 유형 | 관측 사례 |
|---|---|
| 조인된 테이블에 같은 이름의 컬럼이 있고 WHERE 절에서 한정하지 않음 | 2건 |
| SELECT 목록에서 표현식 별칭과 조인 결과 컬럼명이 충돌함 | 1건 |
[Hypothesis] 컬럼 참조 또는 별칭의 대상을 SQL 문장 안에서 명시하지 않은 점이 공통적인 오류 조건으로 보입니다.
오진 함정
- [Observation] 오류는 WHERE 절의 동일한 컬럼명 때문에 발생할 수 있지만, SELECT 목록의 표현식 별칭과 원본 컬럼명 충돌로도 발생할 수 있습니다.
- [Observation] 조인된 테이블에 같은 이름의 컬럼이 있는 경우, 컬럼이 실제로 어느 테이블의 것인지 확인하지 않고 컬럼명만 수정하면 문제가 남을 수 있습니다.
환경 매트릭스
| SQL 위치 | 관측된 조건 | 수정 방식 |
|---|---|---|
WHERE | 조인된 테이블에 동일한 컬럼명이 존재함 | 테이블 별칭으로 컬럼을 한정함 |
SELECT | 표현식 별칭과 조인 결과 컬럼명이 충돌함 | 표현식 별칭과 원본 컬럼을 구분하고 테이블 별칭을 명시함 |
진단 순서
- [Observation] 오류가 발생한 SQL 위치가
WHERE인지SELECT인지 확인합니다. - [Observation] 조인된 테이블에 동일한 컬럼명이 있는지 확인합니다.
- [Observation] 컬럼 참조에 테이블 별칭이 붙어 있는지 확인합니다.
- [Observation]
SELECT목록에서는 표현식 별칭과 조인 결과의 원본 컬럼명이 충돌하는지 확인합니다. - [Observation] 참조 대상과 별칭을 명시한 뒤 쿼리가 실행되는지 확인합니다.
참고 자료
MySQL · 공식 자료 · 확인 범위: MySQL 오류 번호 1052의 심볼은 ER_NON_UNIQ_ERROR이고 SQLSTATE는 23000입니다., 오류 메시지 형식은 "Column '%s' in %s is ambiguous"입니다., 두 번째 %s에는 field list 또는 on clause 같은 열 위치가 표시될 수 있습니다., MySQL은 SELECT 목록 또는 ON 절에서 적절히 한정되지 않은 열 참조를 가능한 원인으로 제시합니다., MySQL은 열을 적절한 테이블 이름으로 한정하거나 USING 절을 사용해 한정이 필요 없도록 쿼리를 수정하는 방법을 제시합니다. · 확인일: 2026-07-24
확인 범위: 조인 쿼리에서 여러 테이블에 같은 이름의 CategoryID 컬럼이 있으면 WHERE CategoryID 참조가 모호해질 수 있습니다., 테이블 별칭을 사용해 컬럼을 한정하면 모호성 오류를 해결할 수 있습니다. · 확인일: 2026-07-30
확인 범위: 두 테이블에 같은 이름의 컬럼이 있으면 WHERE 절에서 MySQL이 참조 대상을 결정하지 못할 수 있습니다., 필요한 테이블 별칭을 컬럼 참조에 붙이면 쿼리가 실행됩니다. · 확인일: 2026-07-30
확인 범위: SELECT 목록에서 표현식 별칭과 조인 결과의 컬럼명이 충돌하면 ambiguous column 오류가 발생할 수 있습니다., 표현식 별칭과 원본 컬럼을 구분하고 테이블 별칭을 명시해 오류를 해결할 수 있습니다. · 확인일: 2026-07-30