我有一个带有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
答案 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
您可以使用别名将此虚拟字段添加到所选字段,并且必须按顺序使用别名。