[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 |