MyBatis(MySQL)分组后组内排序

MySQL根据字段进行分组后组内排序

要求:
根据status进行划分组,再从组内选择一个字段进行排序
这里我们使用更新时间update_time 进行降序排序

  • 分组操作:
    根据status进行分组 通过over(partition by status)进行分组操作
  • 组内排序:
    根据update_time进行组内排序 ,在分组操作的基础上添加排序,sql语句为:over(partition by status order by update_time desc
    desc为降序,asc为升序,可以根据需求自行选择。
    完整SQL语句如下:
select a.id as 功能编号, a.function_name as 功能名称,
		a.content as 功能详细,a.create_time as 创建时间,
		a.update_time as 更新时间,a.status as 启用状态,a.del_flag as 删除标识,a.remark as 备注 
		from (select *,row_number() over(partition by status order by update_time desc)
        from 数据库名称
        where del_flag="0") aa //筛选掉已被删除的数据(0代表未删除,2代表已删除)

这里的ROW_NUMBER()必须添加上去,该函数分别应用于每个分区,并重新初始化每个分区的行号
PARTITION BY子句将结果集划分为分区
ORDER BY子句定义结果集的每个分区中的行的逻辑顺序。 ORDER BY子句是必需的,因为ROW_NUMBER()函数对顺序敏感。

查询结果:
在这里插入图片描述
核心语句就是row_number() over(partition by status order by update_time desc)该sql语句进行分组再组内排序操作。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值