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

如何将MySQL聚合函数结果作为其他表的字段值?

解决方案:关联查询与更新书籍平均评分

一、查询包含书籍标题与平均评分的结果

用LEFT JOIN将books表和你已写好的平均评分子查询关联,能保留所有书籍(包括无评分的)并展示对应平均评分:

SELECT 
    b.id_book,
    b.title,
    br_avg.avg_rating
FROM 
    books b
LEFT JOIN (
    SELECT 
        id_book, 
        AVG(rating) AS avg_rating
    FROM 
        books_ratings
    GROUP BY 
        id_book
) br_avg ON b.id_book = br_avg.id_book;

用LEFT JOIN而非INNER JOIN的原因是:确保还没有任何评分的书籍也会出现在结果中,它们的avg_rating会显示为NULL,匹配你当前books表的初始状态。

二、更新books表的avg_rating字段

如果需要把计算出的平均评分直接写入books表的avg_rating字段,使用MySQL的UPDATE JOIN语法即可:

UPDATE 
    books b
LEFT JOIN (
    SELECT 
        id_book, 
        AVG(rating) AS avg_rating
    FROM 
        books_ratings
    GROUP BY 
        id_book
) br_avg ON b.id_book = br_avg.id_book
SET 
    b.avg_rating = br_avg.avg_rating;

该语句会将每本书对应的平均评分更新到books表的avg_rating字段,无评分的书籍会保持NULL值不变。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 09:00:08