【发布时间】:2014-02-21 19:50:53
【问题描述】:
我有一个“Has-many-through”表keyword_sentence,其中包含从句子到关键字的链接。
TABLE `keyword_sentence` {
`id` int(11) NOT NULL AUTO_INCREMENT,
`sentence_id` int(11) NOT NULL,
`keyword_id` int(11) NOT NULL,
`created` int(11) NOT NULL,
PRIMARY KEY (`id`),
KEY `sentence_id` (`sentence_id`),
KEY `keyword_id` (`keyword_id`)
)
如何获得每周排名前 5 的关键字?
我想查看每周使用哪些keyword_id,以便我可以关注热门项目。我目前有以下查询,但效果不太好。
SELECT ks.keyword_id
FROM
keyword_sentence ks
WHERE ks.keyword_id IN (
SELECT DISTINCT ks2.keyword_id FROM keyword_sentence ks WHERE
from_unixtime(ks.created) >= CURRENT_DATE - INTERVAL 2 MONTH
AND
from_unixtime(ks.created) < CURRENT_DATE - INTERVAL 1 MONTH
)
ORDER BY COUNT(*) DESC
【问题讨论】:
-
您询问的是一周,但您的查询是几个月。你对哪个感兴趣?你的查询怎么没用?
-
我想查看给定月份范围内每周前 5 个关键字。因此,如果是上个月,最多应该有 20 条记录(4 周 * 5 个关键字 = 20 个结果)。
-
你可以使用数据库存储过程和光标在四个星期内选择每周的顶级关键字到临时表中,最后选择该临时表中的所有内容。
-
“每月热门关键字”“每周前 5 个关键字”哪个?
标签: mysql sql subquery greatest-n-per-group tagging