sql – 检索每个类别的2个最后帖子

前端之家收集整理的这篇文章主要介绍了sql – 检索每个类别的2个最后帖子前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
假设我有2个表:blog_posts和类别.每篇博文都只属于一个类别,所以这里的两个表基本上都有一个外键.

我想从每个类别中检索2个帖子,是否可以在单个请求中实现此目的?
GROUP BY会对所有内容进行分组,并在每个类别中只留下一行.但我想要其中2个.

执行1 N查询(N =类别数)很容易.首先检索类别.然后从每个类别中检索2个帖子.

我相信执行M查询也很容易(M =每个类别我想要的帖子数量).第一个查询选择每个类别的第一个帖子(具有分组依据).第二个查询检索每个类别的第二个帖子.等等

我只是想知道是否有人有更好的解决方案.我真的不介意为此做1 N个查询,但是出于好奇心和一般sql知识,我们将不胜感激!

在此先感谢谁可以帮助我.

解决方法

查看这个 MySQL article,了解如何在任意复杂的分组中处理前N个事物;这是件好事.你可以试试这个:
SET @counter = 0;
SET @category = '';

SELECT
  *
FROM
(
  SELECT
    @counter := IF(posts.category = @category,@counter + 1,0) AS counter,@category := posts.category,posts.*
    FROM
      (
      SELECT
        *
        FROM test
        ORDER BY category,date DESC
      ) posts
) posts
HAVING counter < 2

猜你在找的MsSQL相关文章