Głównym problemem jest to, że wewnętrzne zapytanie nie może być powiązane z twoim where
klauzula na zewnętrznej update
instrukcja, ponieważ filtr where stosuje się najpierw do aktualizowanej tabeli przed wykonaniem podzapytania wewnętrznego. Typowym sposobem radzenia sobie z taką sytuacją jest aktualizacja z wieloma tabelami
.
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