PHP/MySQL使用速度单位对数字进行排序

PHP/MySQL使用速度单位对数字进行排序,php,mysql,Php,Mysql,我在一个大型MySQL数据库中有很多速度单位的记录,比如123.4MB/s和364KB/s 我想把它们按降序排列,但是单位很烦人 我已经尝试了以下方法,但无效: mysql_query("SELECT * FROM results ORDER BY speed DESC LIMIT 20") 我该怎么办 提前谢谢 注意:编辑整个数据库不是一个选项。如果这样的查询很常见,并且速度上没有太多重复,请尝试在速度上创建索引。如果这样的查询很常见,并且速度上没有太多重复,请尝试在速度上创建索引。尝试以下

我在一个大型MySQL数据库中有很多速度单位的记录,比如
123.4MB/s
364KB/s

我想把它们按降序排列,但是单位很烦人

我已经尝试了以下方法,但无效:

mysql_query("SELECT * FROM results ORDER BY speed DESC LIMIT 20")
我该怎么办

提前谢谢


注意:编辑整个数据库不是一个选项。

如果这样的查询很常见,并且速度上没有太多重复,请尝试在速度上创建索引。

如果这样的查询很常见,并且速度上没有太多重复,请尝试在速度上创建索引。

尝试以下操作:

SELECT * FROM results ORDER BY 
    CASE 
        WHEN speed LIKE '%KB/s' THEN CAST(speed AS DECIMAL(10,2))
        WHEN speed LIKE '%MB/s' THEN CAST(speed AS DECIMAL(10,2)) * 1024
    END
DESC
LIMIT 20

试着这样做:

SELECT * FROM results ORDER BY 
    CASE 
        WHEN speed LIKE '%KB/s' THEN CAST(speed AS DECIMAL(10,2))
        WHEN speed LIKE '%MB/s' THEN CAST(speed AS DECIMAL(10,2)) * 1024
    END
DESC
LIMIT 20

对于您的情况,您可以使用此解决方案-

...ORDER BY IF(LOCATE('MB', speed), speed * 1024, speed * 1)

对于您的情况,您可以使用此解决方案-

...ORDER BY IF(LOCATE('MB', speed), speed * 1024, speed * 1)