Database/MySQL
[MySQL](Error) Error 1093 : You can't specify target table 'TABLE_NAME' for update in FROM clause
oSsonGo
2019. 1. 9. 17:26
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)