실행하고 싶은 쿼리다.
Sub쿼리를 따로 실행하면 결과도 잘나오고, 전체 실행을 하니 아래와 같은 결과가나왔다.
[ 실패한 쿼리 ]
UPDATE [TABLE] SET [Coloum] = '[값]'
WHERE [Coloum] IN
( SELECT MAX( [Coloum] ) FROM serverinfo WHERE [Coloum2] = '[값2]' )
AND [Coloum2] = '[값2]'
[MYSQL ERROR]
You can't specify target table 'serverinfo' for update in FROM clause
원인 :
서브쿼리 수행할 시에 서브쿼리의 From절안에 기본쿼리의 테이블과 서브쿼리의 테이블을 같은테이블을 사용 할수 없다는 내용. 업데이트 및 타겟 모두를 위해,
같은테이블 안에서 UPDATE와 DELETE는 사용할 수 없다.
해결 : 서브쿼리로 한번 더 감싸 주었더니 정상실행 되었다.
[ 성공한 쿼리 ]
UPDATE [TABLE] SET [Coloum] = '[값]'
WHERE [Coloum] IN
( SELECT * FROM
( SELECT MAX( [Coloum] ) FROM serverinfo WHERE [Coloum2] = '[값2]' )
as temp )
AND [Coloum2] = '[값2]'
'Programming > DB' 카테고리의 다른 글
[MSSQL] 검색 : 특정 테이블에서 모든 컬럼의 특정 문자열 데이터 찾기 (0) | 2017.03.07 |
---|