본문 바로가기

Database/MySQL

[MySQL](Error) Error 1093 : You can't specify target table 'TABLE_NAME' for update in FROM clause

MySQL의 경우 Oracle과 달리 UPDATE 나 DELETE시 자기 테이블의 데이터를 바로 사용 못해서 SQL실행 시 1093에러가 발생함


UPDATE TBL_TRD_PROD_INFO

           SET REC_TIME = CURRENT_TIME(),

                  REC_ID = '1111'

        WHERE PROD_TRD_ID IN 

            (SELECT PROD_TRD_ID

             FROM TBL_TRD_PROD_INFO

             WHERE ORDER_STEP != 0

               AND ORDER_STEP = 2-1) 


- Sub Query를 하나 더 넣어서 임시 테이블을 만들어서 해결


UPDATE TBL_TRD_PROD_INFO

           SET REC_TIME = CURRENT_TIME(),

                  REC_ID = '1111'

        WHERE PROD_TRD_ID IN 

        (SELECT PROD_TRD_ID

        FROM

            (SELECT PROD_TRD_ID

             FROM TBL_TRD_PROD_INFO

             WHERE ORDER_STEP != 0

               AND ORDER_STEP = 2-1) tmp)