我有一个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