转发的推文和推文总数的计数已被转发

时间:2012-07-25 19:28:15

标签: mysql

考虑以下表格

users                                tweets
---------------------------------    ---------------------------
user_id num_retweets sum_retweets    tweet_id user_id retweeted
---------------------------------    ---------------------------
1                                    1        1       3
2                                    2        1       0
3                                    3        1       4
                                     4        2       0
                                     5        2       0
                                     6        3       1
                                     7        3       2
                                     8        3       0

我想计算num_retweets:用户编写转发转发的次数和sum_retweets:所有用户推文被转发的次数。 users查询后的预期UPDATE表是:

users
---------------------------------
user_id num_retweets sum_retweets
---------------------------------
1       2            7 <-- 3 + 4
2       0            0
3       2            3 <-- 1 + 2

有关构建这两个查询的任何帮助都会非常适用:-)我在表格中执行UPDATE时遇到问题。

1 个答案:

答案 0 :(得分:1)

UPDATE
USERS u
JOIN (
SELECT 
    tweets.user_id,
    COUNT(IF(tweets.retweeted > 0, 1, null)) as num_retweets,
    SUM(tweets.retweeted) as sum_retweets
FROM tweets
GROUP BY tweets.user_id
) as t ON t.user_id = u.user_id
SET u.num_retweets = t.num_retweets, u.sum_retweets = t.sum_retweets