하위 쿼리가 포함된 MySQL 업데이트 쿼리 문제 해결
하위 쿼리가 포함된 MySQL 업데이트 쿼리에서 다음과 유사한 오류가 발생할 수 있습니다.
#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
쿼리:
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
문제:
외부 구문의 where 절 때문에 오류가 발생합니다. 업데이트 문(여기서 a.CompetitionID = Competition.CompetitionID)은 내부 하위 쿼리에 연결할 수 없습니다. 내부 하위 쿼리가 실행되기 전에 업데이트되는 테이블(경쟁)에 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
설명:
이 쿼리는 경쟁 테이블(별칭 C)을 팀 수를 계산하는 하위 쿼리(별명 A)와 조인합니다. 각 대회. 참가 조건은 CompetitionID입니다. 그런 다음 업데이트 문은 Competition 테이블의 NumberOfTeams 열을 하위 쿼리에서 계산된 값으로 설정합니다.
데모:
이 업데이트된 쿼리를 SQL Fiddle에서 사용해 볼 수 있습니다. : http://www.sqlfiddle.com/#!2/a74f3/1
위 내용은 하위 쿼리를 사용하여 MySQL 업데이트 쿼리에서 \'오류 #1064: SQL 구문에 오류가 있습니다\'를 수정하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!