You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何合并MySQL中的关联查询与更新查询以更新机构平均评分?

合并MySQL查询与更新语句的解决方案

嘿,我来帮你把这两个语句合并成一个高效的更新操作!咱们先明确需求:根据指定reviewId找到对应的机构,计算该机构所有评论的平均评分,然后把这个值更新到institutions表的averageRatings字段中。

方法一:使用UPDATE JOIN(推荐,性能更优)

这种方式通过子查询先获取目标机构的平均评分,再关联institutions表完成更新,只需要一次子查询计算,效率更高:

UPDATE institutions i
JOIN (
    -- 先获取reviewId='3'对应的机构ID,再计算该机构所有评论的平均评分
    SELECT institudeId, AVG(averageRating) AS avg_rating
    FROM review
    WHERE institudeId = (SELECT institudeId FROM review WHERE reviewId = '3')
) r ON i.id = r.institudeId
SET i.averageRatings = r.avg_rating;

方法二:使用关联子查询更新

如果你更习惯子查询的写法,也可以直接在SET子句中嵌套计算平均评分的逻辑,同时通过WHERE限定要更新的机构:

UPDATE institutions i
SET averageRatings = (
    -- 原查询逻辑:计算指定reviewId对应机构的平均评分
    SELECT AVG(b.averageRating)
    FROM review a
    INNER JOIN review b ON b.institudeId = a.institudeId
    WHERE a.reviewId = '3'
)
-- 限定只更新目标机构的记录
WHERE i.id = (SELECT institudeId FROM review WHERE reviewId = '3');

注意事项

  • 你原来的更新语句里a.institudeId是未定义的,因为别名a只在查询语句中有效,所以必须通过子查询先获取目标机构的ID,或者用关联的方式传递这个值。
  • 如果reviewId是数值类型,记得去掉引号'3',写成3即可。

内容的提问来源于stack exchange,提问作者kumar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 08:13:18