我使用简单order by
子句根据可用数量显示产品
以下是我正在使用的查询:
SELECT * FROM productsinfo ORDER BY quantity desc
查询没有错误,但排序顺序不正确。任何人请告诉我我错在哪里。
修改
检查了我的cntity clumn是否为varchar
类型。我正在以1,215 10,456
格式存储值。
答案 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或更改表。