Het belangrijkste probleem is dat de innerlijke vraag niet gerelateerd kan zijn aan uw where
clausule op de buitenste update
statement, omdat het waar-filter eerst van toepassing is op de tabel die wordt bijgewerkt voordat de innerlijke subquery zelfs wordt uitgevoerd. De typische manier om met een dergelijke situatie om te gaan, is een update voor meerdere tabellen
.
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
Demo:http://www.sqlfiddle.com/#!2/a74f3/1