如何选择具有最大计数的行进行分组

Nil*_*kla -1 mysql sql

我有一个posts包含列 ( id, user_name, thread_id) 的表。
用户可以为一个话题提交多篇帖子。发布的线程是一对多。

我需要找出每个线程提交最多帖子的人。因此结果将是 Max(Count), user_name, thread_idWHERE 每个 thread_id 只有一行。

该表太大了,所以我想尽可能地优化查询。

pot*_*hin 5

您可以尝试使用group byandhaving子句:

select t.user_name, t.thread_id , count(*) as max_count
from tbl t
group by t.user_name, t.thread_id
having count(*) = ( select count(*) as ttl
                    from tbl
                    where thread_id = t.thread_id
                    group by user_name
                    order by ttl desc
                    limit 1 )
Run Code Online (Sandbox Code Playgroud)