mysql - 如何 ORDER BY varchar 字段作为数字?

标签 mysql sql

我在排序/排序方面遇到问题,无法按我需要的方式工作。

SELECT `proc` FROM `table` ORDER BY `proc` DESC;

结果:

80.0 proc
70.0 proc
60.0 proc
50.0 proc
40.0 proc
200.0 proc
20.0 proc
190.0 proc
180.0 proc
170.0 proc
160.0 proc
150.0 proc
140.0 proc
130.0 proc
120.0 proc
110.0 proc
100.0 proc

我需要的是:

200.0 proc
190.0 proc
180.0 proc
170.0 proc
160.0 proc
150.0 proc
140.0 proc
130.0 proc
120.0 proc
110.0 proc
100.0 proc
90.0 proc
80.0 proc
70.0 proc
60.0 proc
50.0 proc
40.0 proc
20.0 proc

怎么做?

最佳答案

看起来“proc”是一个字符串(varchar 字段),所以它是按词法排序的。如果是这样,您可能可以通过以下方式订购它

SELECT `proc` FROM `table` ORDER BY convert(`proc`, decimal) DESC;

请注意,这样的查询会很慢,对于任何严重的使用,最好使用数字列来存储数字数据。

关于mysql - 如何 ORDER BY varchar 字段作为数字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11728683/

相关文章:

php - 删除带有外键的表

php - 从 mysql 查询创建数组

MySQL - 从另一个表中为 WHERE 子句选择数据

sql - PostgreSQL: VACUUM FULL 持续时间估计

mysql - 在 SQL 的 where 子句中使用 case/if

php - 如何将数据复制到另一个表并避免键冲突?

php - 如何在 MySql 中检索当前周数据?

MySQL:计算多个表中的重复行而不增加计数

sql - 如何建立从本地到 SQL Azure 数据库的安全连接字符串

即使字段不在表中,PHP mysql 也会返回 bool(true)?