我有一个评论表,其中包含对项目进行评分的三种方式。然后项目本身有三列分别保存每个值的平均值。
我可以在更新查询中使用三个嵌套查询来做到这一点,但我觉得这效率低下......有没有办法一次更新它们?
到目前为止,我已将其用作我的选择查询:
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