Das Hauptproblem besteht darin, dass die innere Abfrage nicht mit Ihrem where
in Verbindung gebracht werden kann -Klausel auf dem äußeren update
-Anweisung, da der where-Filter zuerst auf die zu aktualisierende Tabelle angewendet wird, bevor die innere Unterabfrage überhaupt ausgeführt wird. Der typische Weg, mit einer solchen Situation umzugehen, ist ein Multi-Table-Update
.
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