MySQL中如何对GROUP BY结果排序:获取订阅量Top10主题
解决MySQL按订阅人数排序取前10主题的问题
嗨,你离正确结果只差一步啦!你当前的SQL已经完成了分组统计,但缺少按订阅人数降序排序的逻辑,所以不会自动把订阅量最高的主题排在前面。
只需要在你的SQL里加上ORDER BY子句,指定按统计出的订阅数从大到小排列,就能得到想要的结果。这里给你两种写法:
写法1(推荐,可读性更高)
SELECT targetId, COUNT(*) AS subscriber_count FROM subscription GROUP BY targetId ORDER BY subscriber_count DESC LIMIT 10;
写法2(省略别名,更简洁)
SELECT targetId, COUNT(*) FROM subscription GROUP BY targetId ORDER BY COUNT(*) DESC LIMIT 10;
关键逻辑解释:
COUNT(*) AS subscriber_count:给订阅计数结果起一个直观的别名,方便排序和查看输出ORDER BY ... DESC:DESC代表降序排列,这样订阅人数最多的主题会排在最顶部;如果写成ASC就是升序,会得到订阅最少的主题,不符合你的需求LIMIT 10:保留排序后的前10条记录,正好是你要的订阅量最高的前10个主题
用你提供的示例数据测试的话,运行上面的SQL会输出你期望的结果:
targetId | subscriber_count
A | 2
B | 1
内容的提问来源于stack exchange,提问作者sehese8139
相关产品推荐
相关产品推荐

