मुख्य मुद्दा यह है कि आंतरिक क्वेरी आपके where
. से संबंधित नहीं हो सकती है बाहरी 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
डेमो:http://www.sqlfiddle.com/#!2/a74f3/1