您可以使用 获得总数WITH ROLLUP
,但这不适用于LIMIT 5
您想要的,以便仅获取前五个结果。(编辑:)正如评论中所讨论的,它也不适用于排序。
因此,您要么必须获取所有结果,而不仅仅是前 5 个结果,并在应用程序中对它们进行排序,要么使用两个不同的查询,可能使用UNION
@RedFilter 建议的方式在服务器端合并。但是,如果您执行两个单独的查询,我个人宁愿从客户端应用程序中分别发出每个查询,因为稍后将总数从前五名中拆分出来是太多的工作而收效甚微。
要获取所有结果,您可以使用
select entertainer, count(*)
from final_results
group by entertainer with rollup
要进行两次不同的提取,您将使用
select entertainer, count(*)
from final_results
group by entertainer
order by count(*) desc
limit 5
和
select count(*)
from final_results
如果你想要两个都在一个联合中,你可以这样做
(select 1 as unionPart, entertainer, count(*) as count
from final_results
group by entertainer
order by count(*) desc
limit 5)
union all
(select 2 as unionPart, 'Total count', count(*) as count
from final_results)
order by unionPart asc, count desc