본문 바로가기
SQL/MySQL

[MySQL] Delete 쿼리 Syntax Error (delete query in subquery)

by 지구 2021. 3. 19.

MySQL 로 DELETE 쿼리를 날리는데 아래 에러가 발생했다.

SQL Error [1093] [HY000]: You can't specify target table 'my_table_key' for update in FROM clause

 

음??????? 내가 아는 delete 문법에 어긋나지 않은 것 같은데...???

하던 중 stackoverflow 에서 나와 같은 문제에 직면한 사람을 만났고,

subquery 를 아래처럼 사용해야 한다고 답변을 받았다. (왤까? 이건 찾아봐야겠다.)

-- error
DELETE
FROM my_table
WHERE my_table_key IN (
	SELECT jt.join_table_key
	FROM join_table jt
	RIGHT JOIN my_table mt ON jt.join_table_key = mt.my_table_key
	WHERE jt.where_column IS NULL
);

-- success
DELETE
FROM my_table
WHERE my_table_key IN (
	SELECT
    	sub_table.sub_table_key
    FROM (
    	SELECT jt.join_table_key
		FROM join_table jt
		RIGHT JOIN my_table mt ON jt.join_table_key = mt.my_table_key
		WHERE jt.where_column IS NULL
    ) sub_table
);

 

참고 : stackoverflow.com/questions/4471277/mysql-delete-from-with-subquery-as-condition

반응형

댓글