gpt4 book ai didi

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

转载 作者:可可西里 更新时间:2023-11-01 07:21:50 25 4
gpt4 key购买 nike

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

输出:

enter image description here

关于mysql - 如何在 MySQL 中为每个类别选择 3 行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40949026/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com