Database
[MySQL] You can't specify target table '테이블명' for update in FROM clause
jaamong
2022. 1. 20. 16:10
SQL Error [1093] [HY000] : You can't specify target table '테이블명' for update in FROM clause
원인 위 명령어를 실행하려는 테이블과 같은 테이블에서 서브 쿼리로 값을 가져오려는 시도
UPDATE UserPlantList
SET status=?
WHERE userIdx=? AND uPlantIdx=(SELECT uPlantIdx FROM FROM UserPlantList WHERE status=?)
해당 에러는 MySQL에서 특정 테이블에 INSERT, UPDATE, DELETE 등을 수행할 때 발생하는 에러이다. (오라클은 문제없이 돌아가지만 MySQL에서는 지원되지 않는다.) 덕분에 어제 뭐가 문제인지 몰라서 한참 고생했다.
해결 서브쿼리를 한 번 더 감싸서 값을 가져오자
UPDATE UserPlantList
SET status=?
WHERE userIdx=? AND
uPlantIdx=(SELECT Idx FROM (SELECT uPlantIdx AS Idx FROM UserPlantList WHERE status=?) T)
해결에 도움이 된 출처