개발하는 자몽

[MySQL] You can't specify target table '테이블명' for update in FROM clause 본문

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)

 

 

 

 

 

해결에 도움이 된 출처

 

MySQL You can't specify target table '테이블명' for update in From clause 해결방법

SQL Error [1093] [HY000]: You can't specify target table '테이블명' for update in FROM clause MySQL에서 해당 에러는 특정 테이블에 INSERT UPDATE DELETE 등을 수행할 때 발생하는 에러인데 INSERT UPDATE..

wakestand.tistory.com

 

 

'Database' 카테고리의 다른 글

[TIL / SQL] relation, type, constraint, FK (MySQL)  (0) 2024.05.11
JDBC, JPA, MyBatis 차이  (0) 2022.02.09
5. 관계 데이터 모델링  (0) 2022.01.17
개념적 데이터 모델링: 실습  (0) 2022.01.13
4. 개념적 데이터 모델링  (1) 2022.01.12
Comments