>  Q&A  >  본문

업데이트 대상 테이블은 FROM 절에 지정할 수 없습니다.

<p>간단한 mysql 테이블이 있습니다:</p> <pre class="brush:php;toolbar:false;">`pers`가 존재하지 않는 경우 테이블 생성( `persID` int(11) NOT NULL AUTO_INCREMENT, `이름` varchar(35) NOT NULL, `gehalt` int(11) NULL이 아님, `chefID` int(11) 기본 NULL, 기본 키(`persID`) ) 엔진=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=4; INSERT INTO `pers` (`persID`, `name`, `gehalt`, `chefID`) 값 (1, 'blb', 1000, 3), (2, 'as', 1000, 3), (3, '요리사', 1040, NULL);</pre> <p>다음 업데이트를 실행해 보았지만 오류 1093만 수신했습니다. </p> <pre class="brush:php;toolbar:false;">P당 업데이트 SET P.gehalt = P.gehalt * 1.05 어디에서(P.chefID가 NULL이 아닌지 OR 게할트 < (선택하다 ( 최대 선택(gehalt * 1.05) MA Pers에서 MA.chefID = MA.chefID) AS_pers ))</pre> <p>오류를 검색하여 mysql http://dev.mysql.com/doc/refman/5.1/en/subquery-restrictions.html에서 다음 페이지를 찾았지만 도움이 되지 않았습니다. </p> <p>SQL 쿼리를 어떻게 수정하나요? </p>
P粉354602955P粉354602955419일 전346

모든 응답(2)나는 대답할 것이다

  • P粉237125700

    P粉2371257002023-08-28 13:59:47

    이 작업은 세 단계로 수행할 수 있습니다.

    으아악

    ...

    으아악

    또는

    으아악

    회신하다
    0
  • P粉481815897

    P粉4818158972023-08-28 13:51:38

    문제는 어떤 어리석은 이유로든 MySQL에서는 다음과 같은 쿼리 작성을 허용하지 않는다는 것입니다.

    으아악

    즉, 테이블에서 UPDATE/INSERT/DELETE 작업을 수행하려는 경우 내부적으로 쿼리 할 수 없습니다(그러나 외부 테이블의 필드는 참조할 수 있습니다...)


    해결책은 아래와 같이 하위 쿼리에

    를 넣는 것입니다 myTable实例替换为(SELECT * FROM myTable) 으아악

    이렇게 하면 필요한 필드가 임시 테이블에 암시적으로 복사되므로 이는 허용됩니다.

    이 솔루션을

    여기에서 찾았습니다. 이 기사에 대한 참고 사항:

    회신하다
    0
  • 취소회신하다