如何使用选择查询的结果更新一行的多个mysql列


How can I update multiple mysql columns of a row using the result of a select query?

我有一个reviews表,其中包含对项目进行评分的三种方法。项目本身有三列,分别保存每个值的平均值。

我可以在更新查询中使用三个嵌套查询来实现这一点,但我觉得这效率很低。。。有没有办法同时更新它们?

到目前为止,我已经使用这个作为我的选择查询:

SELECT AVG(rating_1),AVG(rating_2),AVG(rating_3) FROM items_reviews WHERE item_id = 1

我只是不知道如何使用该查询的结果来更新项目行。

您可以在UPDATE:中使用联接

UPDATE items a
INNER JOIN
(
    SELECT 
        item_id,
        AVG(rating_1) AS avg1, 
        AVG(rating_2) AS avg2, 
        AVG(rating_3) AS avg3
    FROM items_reviews
    WHERE item_id = 1
    GROUP BY item_id
) b ON a.item_id = b.item_id
SET 
    a.avgrating1 = b.avg1,
    a.avgrating2 = b.avg2,
    a.avgrating3 = b.avg3