MYSQL计数结果的自定义排序顺序?

时间:2016-01-09 07:46:46

标签: mysql sorting sql-order-by

我正在尝试撰写一份关于我使用Google表单收集的一些数据的报告。每个人都被问到他们衣橱里有多少物品。我想将数据显示为总数中有多少落入每个范围的数量。所以,我使用这个mysql查询来计算每个答案的实例:

SELECT  `Closet` , COUNT( * ) FROM  `TABLE 1` GROUP BY  `Closet`

以下是结果数据:

Closet  | COUNT( * )
--------+------------
0       | 8
1-5     | 124
101-200 | 7
11-20   | 181
201-300 | 3
21-50   | 171
51-100  | 48
6-10    | 156

问题是按字母顺序排列,101到200件物品在6-10件物品之前排序。我基本上想以某种方式对其进行排序,这将使数字范围按逻辑顺序排列。 (1-5,6-10,11-20等)。

我该如何做到这一点?

1 个答案:

答案 0 :(得分:1)

您必须使用convert& substring_index

SELECT `Closet` , COUNT( * ) FROM `TABLE 1` GROUP BY `Closet` order by convert(substring_index(Closet,'-',1), unsigned integer) 

这将通过获取范围的第一个数字来对Closet进行排序,这应该基本上完成工作。