Huvudproblemet är att den inre frågan inte kan relateras till din where
sats på den yttre update
sats, eftersom where-filtret tillämpas först på tabellen som uppdateras innan den inre underfrågan ens körs. Det typiska sättet att hantera en situation som denna är en flerbordsuppdatering
.
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