gpt4 book ai didi

mysql - 如何在 mysql 查询中从每个组中选择多个项目?

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

我有一些表单的论坛数据

帖子(作者,thread_id,文本)

对于每位作者,我想选择 10 个与该作者关联的不同 thread_id(可能超过 10 个,并且数量会因作者而异)。

我正在考虑使用 GROUP BY 对“作者”进行分组,但我不明白如何表达每个组的 LIMIT,以及如何将每个组扩展回 10 行。

最佳答案

这是“每组前 N 个”类型查询的解决方案。

请注意,您必须为您想要的给定作者选择哪些 10 个讨论帖。对于此示例,我假设您需要最新的线程(并且 thread_id 是一个自动递增的值),并且对于平局的情况,您有一个主键 posts.post_id

SELECT p1.*
FROM post p1 LEFT OUTER JOIN post p2
ON (p1.author = p2.author AND (p1.thread_id < p2.thread_id
OR p1.thread_id = p2.thread_id AND p1.post_id < p2.post_id))
GROUP BY p1.author
HAVING COUNT(*) < 10;

在评论中回复你的后续问题,这里是解释:

在每个作者的前 10 个线程中,我们可以说对于其中的每一个,该作者的属于结果集的其他线程有 9 个或更少。因此,对于每个作者的帖子 (p1),我们计算同一作者有多少帖子 (p2) 具有更大的线程。如果该计数小于 10,则该作者的帖子 (p1) 属于结果。

我添加了一个术语来解决与 post_id 的关系。

关于mysql - 如何在 mysql 查询中从每个组中选择多个项目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1304599/

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