如何在MySQL中为每个类别选择3行?

如何在MySQL中为每个类别选择3行?,mysql,group-by,aggregate,Mysql,Group By,Aggregate,我有一个表,其中有很多数据,它有一个类别ID和职位ID,我需要阅读3个相同的CatID每个类别的新职位 这不是重复别人提出的问题。在我的问题中,请检查postid catid是否可以是任何内容,如果是重复问题,请在运行查询之前进行计算 我写的是 SELECT MAX(` postid `) AS p1, ` catid ` AS c1 FROM ` postcategory ` GROUP BY ` catid 我可以把另外两个查询放在它里面,但它会使一个查询变

我有一个表,其中有很多数据,它有一个类别ID和职位ID,我需要阅读3个相同的CatID每个类别的新职位

这不是重复别人提出的问题。在我的问题中,请检查postid catid是否可以是任何内容,如果是重复问题,请在运行查询之前进行计算

我写的是

SELECT
    MAX(` postid `) AS p1,
    ` catid ` AS c1
FROM
    ` postcategory `
GROUP BY
    ` catid
我可以把另外两个查询放在它里面,但它会使一个查询变得很大。在MySQL中有什么好方法可以做到这一点吗。我正在寻找的阅读3张贴(最多)属于同一类

postId   catId  
------  --------
     9         3
    15         3
    16         3
    17         3
    18         3
    19         5
    20         8
    21         6
    22         8
    23         6
    46         6
    46         8
    26         3
    25         3
    27         5
    28         3
    37         6
    39        10
    40         6
    41         6
    42         6
    43         6
    44         5
    45        11
    63         6
    64         5
    65         6
    66         6
    68         6

您可以使用下面的查询从每个类别中阅读3篇新文章

SELECT
    p1.postId,
    p1.catId
FROM
    postcategory p1
JOIN postcategory p2 ON p1.catId = p2.catId
AND p2.postId >= p1.postId
GROUP BY
    p1.postId,
    p1.catId
HAVING
    COUNT(*) <= 3
ORDER BY
    catId,
    postId
选择
p1.posted,
p1.catId
从…起
后分类p1
在p1.catId=p2.catId上连接后类别p2
和p2.postId>=p1.postId
分组
p1.posted,
p1.catId
有

COUNT(*)搜索select n per groups谷歌“mysql top n rows group”的可能重复项Hello all,请帮助我运行此数据输出您的愿望是什么?Hello@Faisal,我删除了postcategory表,现在所有类别都直接存储在post表中。请检查一下这个