我有一张表格product(ID, name, quanlity)
,其质量为varchar(55)
使用我的数据
1 | Iphone 3 | 7
2 | Iphone 3S | 8
3 | Iphone 4 | 79
4 | Iphone 4S | 9
5 | Iphone 5 | 10
我的疑问:
Select * From product order by quanlity DESC
但是结果不能订购quanlity,因为quanlity是varchar,如何查询排序
4 | Iphone 4S | 9
2 | Iphone 3S | 8
3 | Iphone 4 | 79
1 | Iphone 3 | 7
5 | Iphone 5 | 10
答案 0 :(得分:3)
不是一个优雅的方法,但您可以将列强制转换为整数
SELECT * FROM product ORDER BY CAST(quanlity AS UNSIGNED)
注意:如果您的某些内容不是整数,那么您将遇到性能问题和意外顺序。我建议你最好把列类型更改为整数(如果有可能 - 甚至有问题)
答案 1 :(得分:1)
试试这个
SELECT * FROM `product ` ORDER BY convert(`quanlity`, decimal) DESC;
答案 2 :(得分:0)
您可以将列刻录为其他类型以允许自然数字排序:
SELECT * FROM `product ` ORDER BY CAST(`quanlity` AS unsigned)