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;
为什么会这个节日的顺序不一样呢?

5个回答

图片说明

用子查询先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就可以了。

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐