我有一个包含大量数据的表,它有一个类别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
输出: