Основният проблем е, че вътрешната заявка не може да бъде свързана с вашето 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
Демо:https://www.sqlfiddle.com/#!2/a74f3/1