原因是:在MySQL中,如果value
是一个字符串,那么在ORDER BY
语句中进行降序排序时,MySQL会根据字符串的字典顺序来排序,而不是数值大小。这意味着字符串会按照首字符的ASCII值进行比较,例如,"100"会排在"2"前面,因为在ASCII码中,"1"的值小于"2"的值。
解决:可以在mybatis中进行value的类型修改;
例如CAST(value AS UNSIGNED)
会将value
转换为无符号整数,这样就可以按照数值大小进行排序了。如果value
可能包含小数,您可以使用CAST(value AS DECIMAL)
或其他适合的数值类型