MySQL - 如何将LIMIT应用于GROUP?

时间:2011-01-20 14:18:56

标签: mysql join group-by limit

我创建了一种博客引擎,根据时间戳将帖子分类为月 - 年类别。我使用以下查询:

SELECT MONTHNAME( post_time ) AS
month , YEAR( post_time ) AS year
FROM blog_posts
GROUP BY year,
month
ORDER BY post_time DESC
LIMIT 0 , 10

返回最新的十个帖子类别,如下所示:

December 2010
November 2010
...
etc

我的问题是如何创建查询以获取较旧/较新的类别?

如果我有像* category_id这样的列*我可以轻松地使用LIMIT, 但是,就像我所拥有的月份和年份一样,我被困住了。

非常感谢,这对我来说是个谜。

2 个答案:

答案 0 :(得分:1)

  

我的问题是如何创建查询以获取较旧/较新的类别?

此查询:

SELECT  MONTHNAME(post_time) AS month, YEAR(post_time) AS year
FROM    blog_posts
GROUP BY
        year, month
ORDER BY
        post_time DESC
LIMIT 0, 10

按月和年分组,以及每个月和每年随机发布的时间顺序。

由于这些随机帖子的顺序与月份和年份的顺序相对应,因此您的类别将以正确的顺序排出(从最近到早期)。

<强>更新

要在10之前显示June 2010类别:

SELECT  MONTHNAME(post_time) AS month, YEAR(post_time) AS year
FROM    blog_posts
WHERE   post_time < '2010-06-01'
GROUP BY
        year, month
ORDER BY
        post_time DESC
LIMIT 0, 10

答案 1 :(得分:0)

如果blog_posts有category_id

SELECT MONTHNAME( post_time ) AS
month , YEAR( post_time ) AS year
FROM blog_posts
GROUP BY year,
month
ORDER BY category_id DESC
LIMIT 0 , 10