1

考虑下表:

tweets                                retweets
----------------------------------    --------------------
id  id_str             retweet_cnt    id id_str
----------------------------------    --------------------
1   46604457684901888                 1  46604457684901888
2   46556513103388672                 2  46604457684901888
3   46294368197427200                 3  46604457684901888
                                      4  46556513103388672
                                      5  46556513103388672

我想UPDATE tweets.retweet_cnt通过计算每个(varchar)id_str它在retweets. 有人可以帮我查询这个吗?重要提示:in 可能id_str 不会出现在中retweets(如46294368197427200示例中的情况)。0在这种情况下,应返回零 ( )。

任何帮助表示赞赏。

4

2 回答 2

2

您可以使用UPDATEon tweets 并加入每个 id 的转发计数:

update tweets t
left join (select id_str, count(id) as id_count
           from retweets r group by id_str) r
  on r.id_str = t.id_str
set t.retweet_cnt = coalesce(r.id_count, 0);

演示:http ://www.sqlfiddle.com/#!2/38e98/1

于 2012-07-25T16:47:16.643 回答
0
SELECT t.id_str, COUNT(r.id)
FROM tweets t
  LEFT JOIN retweets r
  ON t.id_str = r.id_str
GROUP BY t.id_str
于 2012-07-25T16:44:07.500 回答