我有一张员工表。如下
姓名 | 姓氏 | 级别 | job_position |
---|---|---|---|
emp 1 | sur 1 | 13 | 助理州长 |
emp 2 | sur 2 | 12 | CEO |
emp 3 | sur 3 | 12 | CEO |
emp 4 | sur 4 | 12 | 特别 |
emp 5 | Sur 5 | 11 | 副总裁 |
emp 6 | Sur 6 | 11 | 导演 |
emp 7 | Sur 7 | 11 | 院士 |
emp 8 | Sur 8 | 10 | 副总监 |
emp 9 | Sur 9 | 10 | 院士 |
emp 10 | Sur 10 | 10 | 院士 |
emp 11 | Sur 11 | 10 | 院士 |
emp 12 | Sur 12 | 9 | 助理导演 |
emp 13 | Sur 13 | 9 | 院士 |
emp 14 | Sur 14 | 9 | 专家 |
. | |||
. | |||
. | |||
emp 100 | Sur 100 | 2 | 员工 |
因为在我的组织内 他们非常重视级别和职位。 我想根据条件对员工列表进行排序:
首先从“级别”列排序。如果上级先上,下级后上
如果是同一个级别来分析是“管理”还是“经营”。 “管理”在先,“运营”在后。
进入
如果他们是同一级别并且他是'managemnt'。我希望它按如下排序。
1. CEO
2. VICE CEO
3. Assistant CEO
4. Director
5. Vice Director
6. Assistant Director
如果它们处于同一级别并且“操作”了他。我希望它按如下方式排序。
1. Special
2. academician
3. Expert
4. Employee
我应该写Mysql来对员工姓名进行排序。根据级别和位置
附注。对不起英语。
答案 0 :(得分:0)
您可以在 case
子句中使用 order by
表达式:
order by level desc,
case job_position
when "CEO" then 1
when "VICE CEO" then 2
when "Assistant CEO" then 3
when "Director" then 4
when "Vice Director" then 5
when "Assistant Director" then 6
when "Special" then 10
when "academician" then 11
when "Expert" then 12
else 99
end
确保大小写正确(我看到您问题中的“专家”和“专家”有所不同)。
但是,最好创建一个单独的参考表(如 job_positions
),其中包含所有这些位置以及唯一的 id
(序列号)列(从您的主表),一个 name
(具有这些值“CEO”,...等)和一个 order
列,它将确定顺序。然后你不需要这个带有 case
表达式的技巧,只需加入该表并按 order
列排序。