我有一个包含大量数据的表,它有一个类别ID和postId,我需要阅读每个类别3个具有相同CatID的新帖子.
这与其他人提出的问题不重复.请检查在我的问题中postid catid可以是任何东西,当重复问题时,它是在运行查询之前计算的.
我写的是
SELECT
MAX(` postid `) AS p1,
` catid ` AS c1
FROM
` postcategory `
GROUP BY
` catid
我可以将其他2个查询放入union union中,但它会使查询变得很大.在MySQL中有没有什么好方法可以做到这一点.我正在寻找的阅读3 postId(最大)属于同一类别.
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
在这里你可以看到Live Demo
输出:
标签:mysql,group-by,aggregate 来源: https://codeday.me/bug/20190611/1218450.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。