update comment set
good=((select good from comment where id=2)+1)
where id=2;
MySQL에서 이걸 실행했더니
Error Code: 1093. You can't specify target table 'comment' for update in FROM clause
이 에러가 떴다...
원인 및 해결방법
원인 : MySQL 은 Oracle 과는 달리 UPDATE 나 DELETE 시 자기(본인) 테이블의 데이터를 바로 사용하지 못하므로 이러한 SQL 을 실행시 1093 에러가 발생함.
해결방법 : Sub Query 를 하나 더 넣고 sub query 결과를 임시 테이블로 만든후에 실행하면 됨.
update comment set
good=((select tmp_table.nowgood from (select good nowgood from comment where id=2) tmp_table)+1)
where id=2;
따라서 이렇게 바꾼 후 실행하였더니 정상적으로 작동되었다 !
참고
MySQL Error 1093 : You can't specify target table 'tablename' for update in FROM clause
www.lesstif.com
'DB : MySQL | Oracle | MyBatis' 카테고리의 다른 글
MySQL 문법 정리 (w. 프로그래머스 SQL Lv. 4 문제 풀이 -1) (0) | 2023.06.26 |
---|---|
MySQL 문법 정리 (w. 프로그래머스 SQL Lv. 3 문제 풀이) (0) | 2023.06.23 |
MySQL 기본 (4) : MySQL 설치 / 테이블 만들고 데이터 입력 / 자료형 / 데이터 변경, 삭제 (0) | 2022.09.28 |
MySQL 기본 (3) : 서브쿼리 / JOIN / UNION (0) | 2022.09.27 |
MySQL 기본 (2) : 시간/날짜 관련 및 기타 함수들 / 조건에 따라 그룹으로 묶기 (0) | 2022.09.27 |