【问题标题】:How to update fields that is the aggregate result of another table in MySQL?如何更新作为 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语句,如何正确写?

【问题讨论】:

    标签: mysql aggregate-functions


    【解决方案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:实际上这是我错过的嵌套查询别名,现在已修复
    猜你喜欢
    • 1970-01-01
    • 2023-01-09
    • 1970-01-01
    • 2017-07-05
    • 2015-10-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多