ORA-00918: column ambiguously defined
Oracle의미
쿼리의 여러 테이블에 같은 이름의 컬럼이 있고 테이블/alias 접두어 없이 사용되어, Oracle이 어느 테이블의 컬럼인지 판단할 수 없다.
원인
조인된 두 테이블 모두에 같은 이름의 컬럼이 있음(예: 양쪽의 ID). SELECT, WHERE 또는 ORDER BY에서 컬럼을 한정하지 않고(접두어 없이) 사용함.
해결 방법
모호한 모든 컬럼을 테이블 이름 또는 alias로 한정한다: SELECT a.id, b.id FROM tableA a JOIN tableB b ON a.id = b.a_id; 테이블에 짧은 alias를 붙이고 모든 컬럼에 접두어를 붙여 가독성과 명확성을 높인다.
같은 데이터베이스의 다른 항목
- ORA-02291integrity constraint violated - parent key not found
- ORA-02292integrity constraint violated - child record found
- ORA-00979not a GROUP BY expression
- ORA-06550line/column PLS-... PL/SQL compilation error
- ORA-04068existing state of packages has been discarded
- ORA-01427single-row subquery returns more than one row
- ORA-12899value too large for column