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 |
댓글