按类别的SQL查询组具有最新发布日期

时间:2014-05-18 12:02:01

标签: mysql sql greatest-n-per-group

在我的表中,我必须通过category_id和最新的发布日期文章获取最新的文章组。我正在尝试此查询

SELECT * FROM news GROUP BY category_id

它给了我第一篇发表文章。我如何得到最新发布日期的文章。

3 个答案:

答案 0 :(得分:1)

SELECT n1.* 
FROM news n1
join 
(
  select category_id, max(publish_date) as max_publish_date
  from news 
  GROUP BY category_id
) n2 on n1.category_id = n2.category_id 
    and n1.publish_date = n2.max_publish_date

答案 1 :(得分:1)

以下是您想要的一个版本的查询:

select n.*
from news n
where not exists (select 1
                  from news n2
                  where n2.category_id = n.category_id and
                        n2.datetime > n.datetime
                 );

这将利用news(category_id, datetime)上的索引。

答案 2 :(得分:0)

这将返回包含最新文章的组作为第一个结果:

select category_id, max(publish_date) 
from news 
group by category_id 
order by max(publish_date) desc