Mysql
 sql >> Database >  >> RDS >> Mysql

query di aggiornamento mysql con sub query

Il problema principale è che la query interna non può essere correlata al tuo where clausola sull'update esterno istruzione, perché il filtro where si applica prima alla tabella che viene aggiornata prima ancora che venga eseguita la sottoquery interna. Il modo tipico per gestire una situazione come questa è un aggiornamento multi-tabella .

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