Mysql
 sql >> Base de données >  >> RDS >> Mysql

requête de mise à jour mysql avec sous-requête

Le problème principal est que la requête interne ne peut pas être liée à votre where clause sur la update externe , car le filtre where s'applique d'abord à la table mise à jour avant même que la sous-requête interne ne s'exécute. La façon typique de gérer une situation comme celle-ci est une mise à jour multi-tables .

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

Démo :http://www.sqlfiddle.com/#!2/a74f3/1