sql >> Base de Datos >  >> RDS >> Mysql

consulta de actualización de mysql con sub consulta

El problema principal es que la consulta interna no se puede relacionar con su where cláusula en el exterior update porque el filtro where se aplica primero a la tabla que se actualiza antes de que se ejecute la subconsulta interna. La forma típica de manejar una situación como esta es una actualización de varias tablas .

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

Demostración:http://www.sqlfiddle.com/#!2/a74f3/1