ORDER BY分组字段

时间:2014-01-08 09:43:21

标签: mysql sql select sql-order-by

我有一个带有sector列的MySQL表。我有5种扇区类型:1,1和2,2,3和未知。 我需要按行业排序在顶部获得结果:扇区1,1和2,未知(混合),然后是扇区2,最后是扇区3.

是否可以直接在SQL中执行此操作,还是必须使用PHP处理它?<​​/ p>

示例

| **sector** |
|     1      |
|  unknown   |
|     2      |
|    1&2     |
|     3      |
|     1      |

所需的结果是:

sector 1&2
sector 1
sector unknown
sector 1
sector 2
sector 3

2 个答案:

答案 0 :(得分:3)

使用FIELD()功能

试试这个:

SELECT * FROM tableA 
ORDER BY FIELD(sector, '1&2', '1', 'unknown', '2', '3')

SELECT * FROM tableA 
ORDER BY CASE WHEN sector IN ('1&2', '1', 'unknown') THEN 1 
              WHEN sector = '2' THEN 2 
              WHEN sector = '3' THEN 3 ELSE 4 
         END 

答案 1 :(得分:2)

也许是这样的:

order by case
 when sector=1 then 0
 when sector='1&2' then 1
 when sector='unknown' then 1.5
 when sector=2 then 2
 when sector=3 then 3
 end

您可以使用别名将此虚拟字段添加到所选字段,并且必须按顺序使用别名。