我有两个表: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,以及该标记的标记计数。
我该怎么做?
答案 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