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

SQL中如何对GROUP_CONCAT函数的结果值进行排序?

如何对GROUP_CONCAT中的所有值进行排序?

想要让GROUP_CONCAT拼接出来的打卡时间按升序排列很简单,只需要在GROUP_CONCAT函数内部加上ORDER BY子句指定排序规则就可以了。

原查询问题点

你原来的GROUP_CONCAT部分没有指定排序逻辑,所以输出的时间是无序的:

group_concat(CASE WHEN log_date = log_date THEN log_time ELSE '' END) AS logTimings

修改后的完整查询

我帮你调整了查询语句,在GROUP_CONCAT里加入了ORDER BY log_time ASC来实现时间升序排列,同时还简化了多余的CASE条件(log_date = log_date其实恒成立,直接用log_time就行):

SELECT emp.emp_id AS employeeId, 
       emp.emp_name AS employeeName, 
       group_concat(log_time ORDER BY log_time ASC) AS logTimings, 
       shift AS shift 
FROM at_hr_logs_Jan l, 
     at_hr_emp emp, 
     at_dates dt 
WHERE user_id=00000247 
  AND l.user_id=emp.emp_code 
  AND emp.dept_id=1 
  AND l.status_id=fn_getcodevalue_id('STS', 'ACTIVE') 
  AND l.log_date=dt.att_date 
GROUP BY l.log_date ;

效果说明

修改后,logTimings字段就会按照时间从小到大排序输出,正好符合你的期望:

  • 原语句实际输出:18:03,17:40,13:35,11:48,09:19
  • 修改后期望输出:09:19,11:48,13:35,17:40,18:03

如果需要降序排列,只需要把ASC改成DESC就可以啦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 04:17:07