考慮以下表:計算平均消息質量在MySQL
users messages
------------------- ----------------------
user_id avg_quality msg_id user_id quality
------------------- ----------------------
1 1 1 1
2 2 1 0
3 3 1 0
4 1 1
5 1 1
6 2 0
7 2 0
8 3 1
messages.quality
要麼0
或1
。我需要計算每位用戶的平均郵件質量並相應地更新users.avg_quality
。因此,所需的輸出將被修改users
表所示:
users
-------------------
user_id avg_quality <-- DECIMAL (8,2)
-------------------
1 0.60 <-- (3x1 + 2x0)/5
2 0.00 <-- (2x0)/2
3 1.00 <-- (1x1)/1
我開始我的查詢是這樣的,我知道的語法不正確,但有沒有更好的主意。你做?
UPDATE messages m, users u
SET avg_quality = (SELECT COUNT(m.msg_id)/SUM(m.quality))
WHERE m.user_id = u.user_id
你可能在一個運行做到這一點可能是,看到這個例如:http://計算器.com/questions/6209215/mysql-update-table-based-select-count-of-a-different-table當前發佈的答案正在獲取數據,但未更新用戶表。 – 2012-07-25 10:06:09