Masalah utamanya adalah bahwa kueri dalam tidak dapat dikaitkan dengan where
. Anda klausa di bagian luar update
pernyataan, karena filter where diterapkan terlebih dahulu ke tabel yang diperbarui bahkan sebelum subquery dalam dijalankan. Cara umum untuk menangani situasi seperti ini adalah pembaruan multi-tabel
.
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