微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

原文地址:https://www.jb51.cc/mssql/83988.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐