Основният проблем е, че вътрешната заявка не може да бъде свързана с вашето 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