Hovedproblemet er, at den indre forespørgsel ikke kan relateres til din where klausul på den ydre update sætning, fordi where-filteret gælder først for tabellen, der opdateres, før den indre underforespørgsel overhovedet udføres. Den typiske måde at håndtere en situation som denne på er en multi-table opdatering
.
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:https://www.sqlfiddle.com/#!2/a74f3/1