Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

consulta de atualização do mysql com subconsulta


O principal problema é que a consulta interna não pode ser relacionada ao seu where cláusula na update externa , porque o filtro where se aplica primeiro à tabela que está sendo atualizada antes mesmo da execução da subconsulta interna. A maneira típica de lidar com uma situação como essa é uma atualização de várias tabelas .
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

Demonstração:http://www.sqlfiddle.com/#!2/a74f3/1