ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [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

    댓글

Designed by Tistory.