2012-04-24 4 views
0

상관 하위 쿼리를 사용하여 11 일 동안 테이블의 모든 행에 대한 날짜를 업데이트하려고했습니다. 한 가지 문제는 My SQL이 하위 쿼리에서 선택할 테이블을 업데이트하지 못하게한다는 것입니다. 하위 테이블의 결과를 임시 테이블로 저장하여이 문제를 해결할 수있었습니다. 하위 쿼리에서 내 where 절에 대해 정의 된 값이있을 때 작동합니다. 내가 외부 쿼리를 참조 할 때 그러나, 나는이MySql은 상관 하위 쿼리를 사용하여 날짜를 업데이트합니다.

UPDATE cloud.vms v SET expirationdate=(
    SELECT date FROM (
     SELECT DATE_ADD(
      (SELECT expirationdate 
      FROM cloud.vms vm 
      WHERE vm.psname=v.psname), 
      INTERVAL 11 DAY) 
     AS date) 
    AS tmptbl) 

: '절은 어디에'여기 내 쿼리 (즉 vm.psname = v.psname) 난에 "알 수없는 열 'v.psname'를 얻을 또한. 그러나, 나는이 작업을 수행하는 방법을 잘 모르겠습니다 내부가 (example from previous post)에 가입하여 보았다.

답변

1

나는 그것을 시도하지 못했지만, 왜 그냥이

UPDATE cloud.vms set expirationdate = DATE_ADD(expirationdate, INTERVAL 11 DAY) ; 
처럼 DATE_ADD을하고 있지 않습니다
+0

하하, 때로는 쉬운 대답이 내 얼굴 앞에 있습니다. 나는 너무 똑똑해 지려고 노력했습니다. 감사합니다. Nettogrof – ferics2

관련 문제