我运行此查询并需要按状态字段对结果进行排序。
SELECT status
FROM myusers
WHERE status IN (7,8,35)
ORDER BY status DESC
我得到回应:
8
7
7
7
35
当我使用IN (7,8,35)
答案 0 :(得分:2)
这是因为您当前的列采用string
格式存储为VARCHAR
。将其转换为整数以获得正确的结果。
SELECT status
FROM myusers
WHERE status IN (7,8,35)
ORDER BY CAST(status AS SIGNED) DESC
或者另一种方法是将status
列的当前数据类型更改为INT
答案 1 :(得分:1)
您的status
字段应该是要正确排序的数字字段。目前的订单显然是按字母顺序排列的。
答案 2 :(得分:0)
您的状态列可能是VARCHAR
,将其转换为INT
列,它应该有效。
答案 3 :(得分:0)
我认为你的'status'是VARCHAR类型,所以排序顺序是正确的。 你排序下降,所以“词典”(按字典顺序)大于“7”,大于“35”。
对于数字排序,请将状态字段的数据类型更改为数字类型。
对于订单(7,8,35),您应该使用ORDER BY状态ASC; - )