下图是后台mybatis的返回值
下图是数据库的查询结果
下面是sql语句
SELECT COUNT(1) as count, mc.calendar_year_month as calendarTime ,
mc.calendar_month as calendarMonth,
group_concat(mc.calendar_name) as calendarNames
FROM kbpos_marketing.marketing_calendar mc
WHERE mc.calendar_year_month <![CDATA[ >= ]]> #{beginDate}
AND mc.calendar_year_month <![CDATA[ <= ]]> #{endDate} AND mc.delete_flag=0
GROUP BY mc.calendar_year_month,mc.calendar_month
ORDER BY mc.calendar_year_month,mc.calendar_month;
这个字段是string类型,数据库中也是字符串类型
private String calendarNames;
为什么会这个节日的顺序不一样呢?
用子查询先order by,再group by ,顺序应该就一致了。
没有说两句同样的sql执行结果一定会一样
这个跟mybatis没关系,你试试用sql去查看下,mybatis可以开启debug模式打印sql,你用那个sql查看看
因为你ORDER BY mc.calendar_year_month,mc.calendar_month;的是年月,而不是名字,所以它是无序的,顺序随机。
而且实际上中文排序本身对于老外写的程序来说就勉为其难。老外懂重音字么?你说重阳节的重是按照Chong参与排序还是Zhong排序?这可一个在前一个在后,差别大了。
我知道结果了各位,是因为group_concat排序,不一定是根据表中顺序来的,自己手动在group_concat(order by)里面加个order by就可以了。