我有一个评论表,其中包含三种评价项目的方法。然后项目本身有三列来分别保存每个值的平均值。
我可以在更新查询中使用三个嵌套查询来做到这一点,但我觉得这样效率很低......有没有办法一次更新所有这些?
到目前为止,我已将此作为我的选择查询:
SELECT AVG(rating_1),AVG(rating_2),AVG(rating_3) FROM items_reviews WHERE item_id = 1
我只是不知道如何使用该查询的结果来更新项目行。
答案 0 :(得分: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