Mysql命令不能正常工作

时间:2012-03-29 01:48:03

标签: mysql database

我使用简单order by子句根据可用数量显示产品

以下是我正在使用的查询:

SELECT * FROM productsinfo ORDER BY quantity desc  

查询没有错误,但排序顺序不正确。任何人请告诉我我错在哪里。

修改

检查了我的cntity clumn是否为varchar类型。我正在以1,215 10,456格式存储值。

4 个答案:

答案 0 :(得分:14)

您的数量列可能是varchar类型,因此它不会按数字排序。请检查。 您需要将其转换为整数类型

尝试以下:

SELECT * FROM productsinfo ORDER BY CAST(quantity AS UNSIGNED ) desc 

或使用以下技巧。

SELECT * FROM productsinfo ORDER BY quantity+0 DESC

答案 1 :(得分:3)

我认为您将数量定义为VarChar。因为如果它是Number int smallint decimal ,..),订单肯定是正确的。

SELECT *, CAST(quantity AS int) QuantityA 
FROM productsinfo   
ORDER BY QuantityA desc

答案 2 :(得分:1)

您必须先从值中删除,,然后将结果转换为数字。试一试:

SELECT * FROM productsinfo
ORDER BY REPLACE(quantity, ',', '')+0 DESC

答案 3 :(得分:0)

答案是: - 对于varchar数据类型,它从左到右比较integert数据,这意味着它比11更少。 这就是为什么比较和排序整数数据的varchar数据类型是一个糟糕的选择。 使用查询中的强制转换将其转换为int或更改表。