MySQL Order By不适用于所有记录

时间:2012-09-06 22:19:21

标签: mysql sql sorting sql-order-by

我运行此查询并需要按状态字段对结果进行排序。

SELECT status
FROM myusers
WHERE status IN (7,8,35)  
ORDER BY status DESC

我得到回应:

8
7
7
7
35

当我使用IN (7,8,35)

时,为什么它没有正确排序

4 个答案:

答案 0 :(得分:2)

这是因为您当前的列采用string格式存储为VARCHAR。将其转换为整数以获得正确的结果。

SELECT status
FROM myusers
WHERE status IN (7,8,35)  
ORDER BY CAST(status AS SIGNED) DESC

或者另一种方法是将status列的当前数据类型更改为INT

SQLFiddle Demo

答案 1 :(得分:1)

您的status字段应该是要正确排序的数字字段。目前的订单显然是按字母顺序排列的。

答案 2 :(得分:0)

您的状态列可能是VARCHAR,将其转换为INT列,它应该有效。

答案 3 :(得分:0)

我认为你的'status'是VARCHAR类型,所以排序顺序是正确的。 你排序下降,所以“词典”(按字典顺序)大于“7”,大于“35”。

对于数字排序,请将状态字段的数据类型更改为数字类型。

对于订单(7,8,35),您应该使用ORDER BY状态ASC; - )