DataBase

[MySQL] You can't specify target table 에러 발생시

nineDeveloper 2022. 6. 29.
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

'DataBase' 카테고리의 다른 글

[MySQL] snakecase to camelcase 변환 Function  (0) 2021.10.06
[MongoDB] 카카오와 MongoDB 내용 정리  (0) 2021.01.03

댓글

💲 추천 글