我有一张包含大量数据的表格,它有一个类别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
答案 0 :(得分:7)
您可以阅读每个类别的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
<强>输出:强>