我需要在几千条记录中提取一些数据,但是我在排序结果时遇到了麻烦。
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月,2月 2014年,2014年3月,2014年4月,2014年5月,2014年6月,2014年8月, 2013年10月,2013年9月,2013年6月,2013年7月,2013年5月,8月 2013 84277 2013年9月,2014年4月,2013年5月,2014年5月,2014年6月, 2013年5月,2014年3月,2013年6月,2014年2月,2014年1月,7月 2013年,2013年12月,2013年11月,2013年8月,2013年10月,8月 2014
以上查询返回正确的月份,以idCodes分隔,但月份全部乱序。
如何在对记录进行分组之前对记录进行排序?
答案 0 :(得分:1)
使用order by
group_concat()
中的SELECT IdCode,
GROUP_CONCAT(' ', CONCAT(MONTHNAME(ei.StartDatetime),' ',YEAR(ei.StartDatetime))
ORDER BY 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;
选项:
{{1}}
答案 1 :(得分:0)
您可以在GROUP_CONCAT
函数中指定排序,例如:
GROUP_CONCAT(DATE_FORMAT(ei.StartDatetime,'%M %Y') ORDER BY ei.StartDatetime)
^^^^^^^^^^^^^^^^^^^^^^^^^
(我的偏好是通过单个函数调用获得月份和年份,以及对列的一个引用,而不是三个函数调用和对同一列的两个引用。我已经在上面证明了这一点。)
参考:http://dev.mysql.com/doc/refman/5.0/en/group-by-functions.html#function_group-concat