今天遇到一个问题
mysql表中有一个用于排序的字段(sortNum)设置为varchar类型
然后排序就出现问题了
select * from kbs_firstleveloffice order by firstOffice,sortNum desc
结果:
7 内科 感染科 76 内科 血液科 65 内科 肾内科 53 内科 风湿免疫科 38 内科 神经内科 32 内科 心血管内科 24 内科 呼吸科 1510 内科 老年科 10
明显不对啊,
貌似机制是这样的,如果是字符串的话,先排首字母,再排后面的
解决办法
1,修改字段为int类型
2,查询的时候字段+0
例如上面的查询码语句,修改完成后
select * from kbs_firstleveloffice order by id,(sortNum+0) desc
+0的目的就是转换成int类型。当然会有性能损耗,但是这个表一共就60条数据。
而且查询一次数据就存储到redis里面了,so,我选了第二种方法。