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

相关文章

SELECT a.*,b.dp_name,c.pa_name,fm_name=(CASE WHEN a.fm_n...
if not exists(select name from syscolumns where name=&am...
select a.*,pano=a.pa_no,b.pa_name,f.dp_name,e.fw_state_n...
要在 SQL Server 2019 中设置定时自动重启,可以使用 Window...
您收到的错误消息表明数据库 &#39;EastRiver&#39; 的...
首先我需要查询出需要使用SQL Server Profiler跟踪的数据库标...