在我的表中,我必须通过category_id和最新的发布日期文章获取最新的文章组。我正在尝试此查询
SELECT * FROM news GROUP BY category_id
它给了我第一篇发表文章。我如何得到最新发布日期的文章。
答案 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