MySQL에서 데이터를 업데이트할 때 하위 쿼리를 사용하여 다른 테이블의 값을 참조해야 하는 경우가 많습니다. 그러나 하위 쿼리가 외부 업데이트 문과 제대로 관련되지 않은 경우 오류가 발생할 수 있습니다.
다음 쿼리를 고려하세요.
Update Competition Set Competition.NumberOfTeams = ( SELECT count(*) as NumberOfTeams FROM PicksPoints where UserCompetitionID is not NULL group by CompetitionID ) a where a.CompetitionID = Competition.CompetitionID
이 쿼리는 오류 메시지와 함께 실패합니다.
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'a where a.CompetitionID = Competition.CompetitionID' at line 8
내부 하위 쿼리가 외부 업데이트 문의 where 절과 관련이 없기 때문에 오류가 발생합니다. 하위 쿼리가 실행되기 전에 대상 테이블(경쟁)에 where 조건이 적용됩니다. 이 문제를 해결하려면 다중 테이블 업데이트를 사용할 수 있습니다.
Update Competition as C inner join ( select CompetitionId, count(*) as NumberOfTeams from PicksPoints as p where UserCompetitionID is not NULL group by CompetitionID ) as A on C.CompetitionID = A.CompetitionID set C.NumberOfTeams = A.NumberOfTeams
이 다중 테이블 업데이트는 Competition 테이블(별명 C)과 하위 쿼리(별칭 A)를 올바르게 조인하여 하위 쿼리의 값은 외부 업데이트 문에서 필터링하는 데 사용할 수 있습니다.
수정된 쿼리의 실시간 데모를 보려면 다음 SQL Fiddle을 참조하세요. http://www.sqlfiddle.com/#!2/a74f3/ 1
위 내용은 구문 오류를 방지하기 위해 MySQL 업데이트 문에서 하위 쿼리를 올바르게 사용하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!