这个问题在这里已有答案:
我需要在几千条记录中提取一些数据,但是我在排序结果时遇到了麻烦 .
SELECT IdCode, GROUP_CONCAT(' ',CONCAT(MONTHNAME(ei.StartDatetime),' ',YEAR(ei.StartDatetime)))
FROM exclusion_import_data eid JOIN exclusion_import ei ON ei.ImportId = eid.ImportId
WHERE ( IdCode IN ( '84277', '253533' ))
GROUP BY IdCode
ORDER BY RecordId ASC;
基本上我想看看我们的系统中出现了哪些月份的特定记录 .
253533 2013年5月,2013年11月,2013年12月,2014年1月,2014年2月,2014年3月,2014年4月,2014年5月,2014年6月,2014年8月,2013年10月,2013年9月,2013年6月,2013年7月,2013年5月,2013年8月84277 2013年9月,2014年4月,2013年5月,2014年5月,2014年6月,2013年5月,2014年3月,2013年6月,2014年2月,2014年1月,2013年7月,2013年12月,2013年11月,2013年8月,2013年10月,2014年8月
上面的查询返回正确的月份,由idCodes分隔,但月份都是乱序 .
如何在对记录进行分组之前对记录进行排序?
2 回答
您可以在
GROUP_CONCAT
函数中指定排序,例如:(我的偏好是通过单个函数调用获得月份和年份,以及对列的一个引用,而不是三个函数调用和对同一列的两个引用 . 我已经在上面证明了这一点 . )
参考:http://dev.mysql.com/doc/refman/5.0/en/group-by-functions.html#function_group-concat
使用
group_concat()
中的order by
选项: