DB/MySQL

[HY000][1093] You can't specify target table 'XXX' for update in FROM clause

seungdols 2023. 2. 1. 09:07

[HY000][1093] You can't specify target table 'order_item' for update in FROM clause

위와 같은 오류가 발생 했다. 

DELETE from order_item
WHERE id in (
    SELECT *
    FROM order_item
    WHERE item_id IN(
    '1','2','3','4','5'
   )
);

쿼리를 위와 같았다. 

MySQL에서는 아래처럼  조회한 Sub-Query의 결과를 임시 테이블로 만들어 주어야 한다. Oracle과 다른 점이 같은 table 참조가 직접적으로 불가하다. (Update, Delete 쿼리에 해당한다.)

DELETE from order_item
WHERE id in (
SELECT id
FROM (
    SELECT *
    FROM order_item
    WHERE item_id IN
    (
    	'1','2','3','4','5'
    )
  ) tmp
);
반응형

'DB > MySQL' 카테고리의 다른 글

CURRENT_TIMESTAMP를 default로 셋팅시 datagrip 오류  (0) 2023.02.16
auto_increment란?  (0) 2014.05.26