我有一个posts包含列 ( id, user_name, thread_id) 的表。
用户可以为一个话题提交多篇帖子。发布的线程是一对多。
我需要找出每个线程提交最多帖子的人。因此结果将是
Max(Count), user_name, thread_idWHERE 每个 thread_id 只有一行。
该表太大了,所以我想尽可能地优化查询。
您可以尝试使用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)