我有形式的一些论坛数据

柱(作者,的thread_id,文本)

有关每个作者,我想选择与该作者相关联10个不同thread_ids(可能有超过10个,和数量将通过作者有所不同)。

我想使用GROUP BY到组“作家”,但我不明白如何表达对每个组的限制,如何每组扩大回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联系。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top