Mybatis查询的字符串字段的顺序有些是逆序

下图是后台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就可以了。