SELECT * FROM p order by `size`
mysql为什么排序不对
10.08
100
100
100开始到
379.65
379.8就到两位数
38
38

SELECT * FROM p order by `size`
mysql为什么排序不对
10.08
100
100
100开始到
379.65
379.8就到两位数
38
38

晚上好🌙🌙🌙
本答案参考ChatGPT-3.5
问题可能出现在对size字段的排序上。根据提供的信息,可以看出在排序结果中,10.08被排在了379.65和379.8之前,而38和N@m074879466被排在了379.65和379.8之后。这可能是因为size字段的数据类型是字符串,而不是数字。
MySQL对字符串进行排序时,是根据字符的ASCII码值进行排序的。因此,它将按字典顺序对字符串进行排序,而不是按数值大小进行排序。在ASCII码中,数字字符的顺序是根据其字符值来排序的,而不是按数值大小来排序的。
解决这个问题的方法是将size字段的数据类型更改为数值类型,如DECIMAL或FLOAT。这样MySQL就可以按数值大小进行排序了。
解决方案:
size字段的数据类型更改为数值类型,在创建表时或使用ALTER TABLE语句进行修改。ALTER TABLE p MODIFY COLUMN `size` DECIMAL(10, 2);
size字段转换为数值类型,并按数值进行排序。SELECT * FROM p ORDER BY CAST(`size` AS DECIMAL(10, 2));
这样,排序结果应该就按照数值大小进行了排序。