作者热门文章
- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我有一个包含大量数据的表,它有一个类别 ID 和 postId,我需要为每个类别阅读 3 个具有相同 CatID 的新帖子。
这不是其他人提出的问题的重复。请检查我的问题中的 postid catid 在运行查询之前计算的重复问题中可以是任何东西。
我写的是
SELECT
MAX(` postid `) AS p1,
` catid ` AS c1
FROM
` postcategory `
GROUP BY
` catid
我可以将 2 个其他查询放入 union distinct 中,但这会使查询变得很大。有什么好的方法可以在 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 - 如何在 MySQL 中为每个类别选择 3 行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40949026/
我是一名优秀的程序员,十分优秀!