Mysql
 sql >> Datenbank >  >> RDS >> Mysql

MySQL-Aktualisierungsabfrage mit Unterabfrage

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