加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

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

发布时间:2020-12-12 06:05:22 所属栏目:MsSql教程 来源:网络整理
导读:假设我有2个表:blog_posts和类别.每篇博文都只属于一个类别,所以这里的两个表基本上都有一个外键. 我想从每个类别中检索2个帖子,是否可以在单个请求中实现此目的? GROUP BY会对所有内容进行分组,并在每个类别中只留下一行.但我想要其中2个. 执行1 N查询(N =
假设我有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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读