mysql 分组、排序

本文介绍了一个业务场景,通过MySQL查询获取每个审核环节中最后一次审核的详情。首先,使用GROUP_CONCAT结合ORDER BY对审核记录按AUDIT_FLAG_NAME分组并排序,然后利用SUBSTRING_INDEX获取每组的第一个元素,即最新的审核ID。接着,将结果与原表进行左连接查询,得到最新的审核日期、审核人等信息。这种方法有效地定位了每个审核环节的最新审核状态。
摘要由CSDN通过智能技术生成

mysql 分组、排序

业务场景:获取每个审核环节中,最后一次审核时,对应的审核人、审核日期;
在这里插入图片描述

第一步 获取当前任务的审核记录,以group by AUDIT_FLAG_NAME分组后 通过 group_concat 进行指定字段的排序拼接,然后通过SUBSTRING_INDEX 来查找指定下标的数据,实现了快速的定位分组数据
SELECT 
audit.AUDIT_FLAG_NAME, 
SUBSTRING_INDEX(GROUP_CONCAT(audit.id ORDER BY audit.CREATE_DATE DESC, ',' ), ',', 1 ) AS keyId  
FROM 
dailymanageaudit audit 
WHERE 
audit.IS_DEL = 0  
AND audit.DAILY_MANAGE_ID = '328'  
GROUP BY 
audit.AUDIT_FLAG_NAME

第二步  用上面的查询结果,连表查询即可
select dt.CREATE_DATE createDate,user.realName,dt.AUDIT_FLAG_NAME auditFlagName from ( 
SELECT 
audit.AUDIT_FLAG_NAME, 
SUBSTRING_INDEX(GROUP_CONCAT(audit.id ORDER BY audit.CREATE_DATE DESC, ',' ), ',', 1 ) AS keyId  
FROM 
dailymanageaudit audit 
WHERE 
audit.IS_DEL = 0  
AND audit.DAILY_MANAGE_ID = '328'  
GROUP BY 
audit.AUDIT_FLAG_NAME 
) tab  
left join dailymanageaudit dt on tab.keyId = dt.id 
left join sysuser user on user.id = dt.SYS_USER_ID

结果如下:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值