我可能忽略了一些非常明显的内容,但无法运行多个UPDATE语句。我要实现的是根据另一个表中的值将SELECT从表中的AVG()UPDATE列。

我遵循以下解决方案,但无法使其运行:

原始答案

我的解决方案:

UPDATE
  teams
SET
  teams.overall_rank = q.rank_avg
FROM
  (
    SELECT
      team_id as t_id,
      AVG(rank) as rank_avg
    FROM
      team_list
    WHERE
      rank NOT IN (0, -1)
    GROUP BY
      team_id
    ORDER BY
      rank_avg
  ) q
WHERE
  q.t_id = teams.team_id

错误信息:

You have an error in your SQL syntax; it seems the error is around: 'FROM ( SELECT team_id as t_id, AVG(rank) as rank_avg FR' at line 5

我正在使用MySQL。我在这里想念什么?

分析解答

请尝试以下-您的语法对mysql无效

UPDATE teams
join
  (
    SELECT
      team_id as t_id,AVG(rank) as rank_avg
      FROM team_list
      WHERE rank NOT IN (0, -1)
      GROUP BY team_id
   ) q on q.t_id = teams.team_id 
SET teams.overall_rank = q.rank_avg