[MYSQL] SubQuery 사용법

Programming/DB | 2016. 6. 16. 13:49 | 까까까


실행하고 싶은 쿼리다.

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]'

























,