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