ORDER BY DESC 无法正常工作

use*_*486 3 mysql sql

我有这个 sql 查询

SELECT `price` FROM `used_cars` ORDER BY `price` DESC 
Run Code Online (Sandbox Code Playgroud)

所以我显然想按价格从高到低排序。但是,它似乎是取第一个数字并按此排序。我的理论是,它把它当作一个字符串来对待,因为该列是一个 varchar,所以它是有道理的。但是,这是第三方数据,所以我坚持使用它。我如何订购以便较大的数字在先?

所以这是如何订购它们的示例

9698
8999
8988
8900
5983
4988
4984
42441
40949
3995
3995
38995
37685
36999
35983
34990
34785
32999
30594
29999
29999
2862
28000
27995
Run Code Online (Sandbox Code Playgroud)

Jon*_*oni 7

您应该将该列转换为数字数据类型。您可以在表定义或查询本身中执行此操作,例如:

... ORDER BY `price`+0 DESC
Run Code Online (Sandbox Code Playgroud)


Dav*_*son 5

CAST 应该可以工作:

SELECT CAST(price AS UNSIGNED) AS NumPrice
FROM used_cars
ORDER BY NumPrice DESC
Run Code Online (Sandbox Code Playgroud)