1

アイテムを評価する 3 つの方法を含むレビュー テーブルがあります。項目自体には、各値の平均をそれぞれ保持するための 3 つの列があります。

更新クエリで 3 つのネストされたクエリを使用してこれを行うこともできますが、これは効率が悪いように感じます.一度にすべてを更新する方法はありますか?

これまでのところ、これを選択クエリとして使用しました。

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

そのクエリの結果を使用してアイテム行を更新する方法がわかりません。

4

1 に答える 1

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
于 2012-07-10T00:00:35.647 に答える