본문 바로가기

개발중/sql

MySQL Error 1093 : You can't specify target table 'tablename' for update in FROM clause

728x90
반응형

원인


MySQL 은 Oracle 과는 달리 UPDATE 나 DELETE 시 

자기 테이블의 데이터를 바로 사용 못하므로 아래와 같은 SQL 을 실행시 1093 에러가 발생함.

UPDATE DEVEL_ANA_DICTIONARY 
   SET USE_YN = 'Y'  
 WHERE WORD_NO = ( SELECT WORD_NO 
                     FROM DEVEL_ANA_DICTIONARY 
                    WHERE WORD_NM = '007가방' );

 

처리


Sub Query 를 하나 더 넣고 

Sub Query 결과를 임시 테이블로 만든후에 실행하면 해결됨.

UPDATE DEVEL_ANA_DICTIONARY 
   SET USE_YN = 'Y'  
 WHERE WORD_NO = ( SELECT TEMP.* 
                      FROM (SELECT WORD_NO 
                              FROM DEVEL_ANA_DICTIONARY 
                             WHERE WORD_NM = '007가방'
                  ) TEMP );
728x90
반응형