DataBase
[MySQL] You can't specify target table 에러 발생시
nineDeveloper
2022. 6. 29. 21:54
728x90
MySQL에서 update,delete문에서 서브쿼리를 사용할 경우
You can't specify target table 'xxx' for update in FROM clause
라는 에러가 발생할 경우가 있다
아래의 SQL문 실행 시
UPDATE uesrs
SET like = 10,
login_count = 0
WHERE ID = (SELECT MIN(id) FROM users);
You can't specify target table 'uesrs' for update in FROM clause
에러가 발생한다
MySQL은 데이터를 추가나 갱신할 경우 동일한 테이블로 서브쿼리를 사용할 수 없다
Oracle이나 Postgresql에서는 문제 없이 실행된다
Solution
서브쿼리의 FROM
은 임시테이블로 다룰수 있으므로 아래와 같이 SQL을 변경하면 실행할 수 있다
UPDATE uesrs
SET like = 10,
login_count = 0
WHERE ID = (SELECT id FROM (SELECT MIN(id) FROM users) as t);
728x90