如何解决这个小问题
这是截图:
这是查询:
SELECT *
FROM serverinfo
ORDER BY rank_pts DESC
正如您所看到的那样,订单是无关紧要的。
答案 0 :(得分:8)
你可以试试这个:
ORDER BY CAST(rank_pts as float) DESC
答案 1 :(得分:4)
似乎你的ranl_pts列是varchar类型,所以它不是按数字排序。
使用以下技巧。
SELECT *
FROM serverinfo
ORDER BY rank_pts+0 DESC
OR
SELECT *
FROM serverinfo
ORDER BY CAST(rank_pts AS DOUBLE) desc
答案 2 :(得分:3)
您可能应该将该列类型更改为float。正如其他人所指出的,它看起来像是varchar或text列。如果不是这样的话,PHPMyAdmin只是以局部格式显示(小数代表,而不是。 - 对于我们英国人),请不要理会我的其余答案。
虽然在查询中转换结果会像Alberto建议的那样工作,但是对每个查询都无效。如果要以数字方式操作和排序数据,则应以数字方式存储它。最终你可能想要在不同的本地化下显示数字,你会有另一个头痛。
我会将数据作为浮点数存储在数据库中,并处理有关如何在应用程序端以本地化格式显示数据的任何逻辑。
答案 3 :(得分:3)
我建议将列数据类型更改为数字而不是字符。这肯定会影响代码的其他部分,但我认为这是值得的,以避免将数值存储为字符表示的其他副作用。
显然,快速修复方法是在order by
中投射列,正如编码人员已经指出的那样。
答案 4 :(得分:0)
将rank_pts
更改为FLOAT *edit
。它看起来像是错误的类型
答案 5 :(得分:0)
SELECT *
FROM serverinfo
ORDER BY CAST(Rank_Pts AS DOUBLE) desc