Notice
Recent Posts
Link
Tags
- 프로그래머스
- 자바
- 스프링부트
- 문자열
- spring
- select
- spring security 6
- springboot
- java
- Docker
- jpa
- DI
- sql
- SSL
- spring boot
- Django
- nginx
- mysql
- session
- 스프링
- PYTHON
- join
- ORM
- spring mvc
- 데이터베이스
- Git
- @transactional
- string
- 1차원 배열
- AWS
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Archives
개발하는 자몽
[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:10SQL 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)
해결에 도움이 된 출처
'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