主な問題は、内部クエリをwhere
に関連付けることができないことです。 外側のupdate
の句 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
デモ: http://www.sqlfiddle.com/#!2/a74f3/1