如何更新作为 MySQL 中另一个表的聚合结果的字段?

Posted

技术标签:

【中文标题】如何更新作为 MySQL 中另一个表的聚合结果的字段?【英文标题】:How to update fields that is the aggregate result of another table in MySQL? 【发布时间】:2011-08-10 18:13:10 【问题描述】:
UPDATE  a JOIN  b ON a.app_id=b.app_id GROUP BY a.app_id SET 

remark_avg=AVG(b.score),remark_count=COUNT(b.id);

上面基本上是我想做的,但是不是有效的mysql语句,如何正确写?

【问题讨论】:

【参考方案1】:
    UPDATE a
INNER JOIN (SELECT AVG(b.score) avg_score,
                   COUNT(b.id) cnt_id,
                   b.app_id
              FROM b
          GROUP BY b.app_id) x ON x.app_id = a.app_id
       SET remark_avg = x.avg_score,
           remark_count = x.cnt_id;

【讨论】:

这个答案中的“x”等于什么? @alexk:实际上这是我错过的嵌套查询别名,现在已修复

以上是关于如何更新作为 MySQL 中另一个表的聚合结果的字段?的主要内容,如果未能解决你的问题,请参考以下文章

使用mySQL中另一个表中的select结果更新表中的字段

如何将 DEFINE 变量设置为等于 PL/SQL 中另一个已定义表的选择

如何将DEFINE变量设置为等于PL / SQL中另一个已定义表的选择

MySQL 表的增删查改

SQL 更新一个表中的值以匹配 Oracle SQL Developer 中另一个表的值

用于将一个表的行聚合到另一个表的 MySQL 触发器