하위 쿼리를 사용하여 MySQL 업데이트 쿼리 오류 수정
제공된 쿼리에는 하위 쿼리를 사용하여 Competition 테이블의 NumberOfTeams 필드를 업데이트하는 작업이 포함됩니다. 그런데 구문 문제로 인해 사용자에게 오류가 발생합니다.
문제는 UPDATE 문의 WHERE 절에 별칭(a)을 잘못 사용했기 때문입니다. MySQL에서 별칭은 하위 쿼리 자체의 범위 내에서만 유효합니다. 따라서 WHERE 절에서 별칭 a를 참조하는 것은 유효하지 않습니다.
다중 테이블 업데이트를 사용한 솔루션
이 문제를 해결하려면 다중 테이블 업데이트를 사용할 수 있습니다. . 여기에는 각 대회의 팀 수를 계산하는 하위 쿼리를 사용하여 Competition 테이블을 조인하는 작업이 포함됩니다. 조인은 CompetitionID 열을 사용하여 수행되며 업데이트된 값은 조인된 하위 쿼리를 기반으로 설정됩니다.
<code class="sql">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;</code>
하위 쿼리는 각 대회의 팀 수를 계산한 다음 NumberOfTeams를 업데이트하는 데 사용됩니다. 메인 경쟁 테이블의 열. 이 방법을 사용하면 하위 쿼리 결과가 업데이트 논리에서 올바르게 참조됩니다.
예 및 데모
이 수정된 쿼리의 데모는 http://에서 볼 수 있습니다. www.sqlfiddle.com/#!2/a74f3/1. 이 쿼리를 실행하면 각 대회에 대한 올바른 팀 수로 대회 테이블이 성공적으로 업데이트됩니다.
위 내용은 하위 쿼리 오류: 별칭 참조 문제가 있는 MySQL 업데이트 쿼리를 수정하는 방법?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!