개발

mysql (ibatis) | 오류 | jdbc.exceptions.MySQLIntegrityConstraintViolationException

AM0530 2020. 6. 30. 10:03

1. 오류 : jdbc.exceptions.MySQLIntegrityConstraintViolationException: Column '(컬럼명)' in where clause is ambiguous

 

2. 오류 원인 : join문에서 동일한 이름의 컬럼이 2개이상 있어서 발생

 

(예시 : 오류 코드) 

1
2
3
4
5
6
SELECT  C.NO
        , C.B_DATE AS cb_date
       , C.E_DATE
        , B.B_DATE AS bb_date
FROM CTABLE C LEFT JOIN BTABLE B ON C.NO = B.NO
ORDER BY B_DATE ASC, E_DATE ASC
cs

CTABLE에도 B_DATE 컬럼이 있고  BTABLE에도 B_DATE가 있는데 

ORDER BY에서 B_DATE가 어느 테이블의 컬럼인지 명시하지 않았다. 

 

(예시 : 수정한 코드) 

1
2
3
4
5
6
SELECT  C.NO
       , C.B_DATE AS cb_date
       , C.E_DATE
        , B.B_DATE AS bb_date
FROM CTABLE C LEFT JOIN BTABLE B ON C.NO = B.NO
ORDER BY C.B_DATE ASC, C.E_DATE ASC
cs

B_DATE가 어느 테이블의 컬럼인지 명시했다. 

*  sql문을 작성할때는 join하는 table 사이에 동일한 컬럼이 없더라도 추후 컬럼이 추가될 수 있기 때문에 

join문에서는 어느 테이블의 컬럼인지 정확히 명시해두어야 오류를 방지할 수 있다.