MySQL选择计数

时间:2009-08-28 05:26:31

标签: mysql select insert count

我有两个表:codes_tags和popular_tags。

codes_tags

CREATE TABLE `codes_tags` (
 `code_id` int(11) unsigned NOT NULL,
 `tag_id` int(11) unsigned NOT NULL,
 KEY `sourcecode_id` (`code_id`),
 KEY `tag_id` (`tag_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8

popular_tags

CREATE TABLE `popular_tags` (
 `id` int(10) unsigned DEFAULT NULL,
 `count` int(10) unsigned DEFAULT NULL,
 KEY `id` (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8

对不起,如果这个问题有点基础,但这就是我想要做的。我试图从code_tags中选择十个tag_id - 这些标签将是最多的10个副本(例如,可能有30个tag_id为7的记录,因此如果那是最高的那个,则会选择7个) 。然后我在popular_tags中插入两个值:tag_id,以及该标记的标记计数。

我该怎么做?

2 个答案:

答案 0 :(得分:4)

这些方面的东西:

insert into popular_tags (id, `count`)
select
    tag_id,
    count(*),
from codes_tags
group by
    tag_id
order by
    count(*) desc
limit 10

答案 1 :(得分:3)

INSERT INTO popular_tags (id, `count`)
SELECT tag_id, count(*) FROM codes_tags 
GROUP BY tag_id ORDER BY count(*) DESC LIMIT 10