본문 바로가기

프로그래밍/이것저것 일하면서

MySQL / You can't specify target table 'TABLE' for update in FROM clause

반응형
MySQL / You can't specify target table 'TABLE' for update in FROM clause

데이터 때문에 생긴 오류로 의심되서 업데이트를 쳐보는데 MySQL 에러가 떴다. 쿼리도 매우 단순하기 그지 없는데 뭘까?

update TABLE_NAME
set COL_NAME = (select COL_NAME from TABLE_NAME where COL_ID = 882825)
where AR_ID = 986178;

혹시나 서브쿼리에 alias를 줘야하나 싶어서 넣어 봤는데도 안된다. 검색을 해보니, 서브쿼리를 한번 더 감싸줘야 한단다. 오라클에서는 상관 없던 건데 MySQL로 넘어오니 이렇게 사소하게 다른 점이 많다.

update TABLE_NAME ar
set COL_NAME = (select COL_NAME from (select COL_NAME from TABLE_NAME far where COL_ID = 882825) far2)
where COL_ID = 986178;

서브쿼리를 한번 더 감쌀 때 alias 줘야한다는 것도 잊지 말기 ㅋㅋㅋ (여기서는 far2)

반응형

개발자가 그리는 인스타툰 팔로우하세요!