You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MySQL中按category_id分组并按likes排序的SQL实现方法

MySQL按category_id分组并按likes排序的子查询实现方案

嘿,我来帮你搞定这个MySQL的分组排序问题!你提到想用子查询实现,我分两种常见的业务场景给你写具体的SQL语句,你可以根据实际需求选择:

场景1:同一分类内按点赞数排序,且按分类分组展示

如果你的需求是把相同category_id的记录集中在一起,同时每个分组内按likes的高低排序,那可以用子查询先完成排序逻辑,外层直接取出结果:

SELECT t.*
FROM (
    -- 子查询里先按分类分组,再按点赞数降序排列(升序就把DESC改成ASC)
    SELECT id, title, body, category_id, likes
    FROM your_table_name
    ORDER BY category_id, likes DESC
) AS t;

记得替换掉your_table_name为你实际的表名,执行后同一分类的记录会挨在一起,并且每组内点赞数高的排在前面。

场景2:取每个分类点赞最高的记录,再按点赞数排序

如果是要筛选出每个分类下点赞数最高的那条记录,再整体按点赞数排序,子查询可以用来先统计每个分类的最高点赞值,再关联原表取出对应数据:

SELECT t1.*
FROM your_table_name t1
INNER JOIN (
    -- 子查询按分类分组,计算每个分类的最高点赞数
    SELECT category_id, MAX(likes) AS max_likes
    FROM your_table_name
    GROUP BY category_id
) AS t2 
ON t1.category_id = t2.category_id AND t1.likes = t2.max_likes
-- 最后按点赞数降序排列结果
ORDER BY t1.likes DESC;

这个语句会先通过子查询拿到每个分类的最高点赞数,再匹配原表中对应分类下点赞数等于该最大值的记录,最后整体按点赞数从高到低排序。

内容的提问来源于stack exchange,提问作者Xavier

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 07:39:25