-
[MySQL] You can't specify target table '테이블 명' for update in FROM clause.기타/오류 모음 2020. 11. 20. 10:00
1. 오류 배경 & 내용
UPDATE의 WHERE절에 서브쿼리를 넣어 해당 결과 값을 갖는 것만 업데이트를 하려는데
SQL 1093 에러가 등장했다.
사용한 쿼리문(테이블 명과 컬럼 명은 다르게 수정했다)과 에러 내용은 아래와 같다.
UPDATE TB_A SET NAME = '강동원' WHERE ID IN ( SELECT B.ID FROM TB_B AS B INNER JOIN TB_A AS A ON A.ID = B.ID WHERE A.AGE > 20 )
SQL 에러 발생!!🚨 SQL Error [1093] [HY000]: You can't specify target table '테이블 명' for update in FROM clause
2. 해결 방법
MySQL은 UPDATE시 자기 테이블의 값을 바로 사용 못 한다.
따라서! 서브쿼리를 한 번 더 ( ) 로 감싸주어야 한다.
UPDATE TB_A SET NAME = '강동원' WHERE ID IN ( SELECT C.ID FROM ( SELECT B.ID AS ID FROM TB_B AS B INNER JOIN TB_A AS A ON A.ID = B.ID WHERE A.AGE > 20 ) AS C )
3. 느낀점
쿼리는 알다가도 모를 것..
알아야할 것도 많을 것..
'기타 > 오류 모음' 카테고리의 다른 글
[YUM] Another app is currently holding the yum lock; ... (0) 2020.05.07