업데이트 대상 테이블은 FROM 절에 지정할 수 없습니다.
P粉354602955
2023-08-27 14:46:57
<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>
이 작업은 세 단계로 수행할 수 있습니다.
으아악...
으아악또는
으아악문제는 어떤 어리석은 이유로든 MySQL에서는 다음과 같은 쿼리 작성을 허용하지 않는다는 것입니다.
으아악즉, 테이블에서
UPDATE
/INSERT
/DELETE
작업을 수행하려는 경우 내부적으로 쿼리 할 수 없습니다(그러나 외부 테이블의 필드는 참조할 수 있습니다...)해결책은 아래와 같이 하위 쿼리에
를 넣는 것입니다
이렇게 하면 필요한 필드가 임시 테이블에 암시적으로 복사되므로 이는 허용됩니다.myTable
实例替换为(SELECT * FROM myTable)
으아악여기에서 찾았습니다. 이 기사에 대한 참고 사항: