如何选择从每个组中的MySQL查询多个项目?
-
19-09-2019 - |
题
我有形式的一些论坛数据
柱(作者,的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联系。
不隶属于 StackOverflow