总结几个mysql常见的几种对结果集排序问题,点击此处,获取建表语句及其数据
按照部门编号的升序,且对每个部门进行薪资降序
思路说明:order by可以同时对多个字段进行排序,字段之间使用逗号隔开
-- 使用逗号对两个要进行排序的字段进行分隔(默认升序,desc降序)select dept_id,salaryfrom empORDERBY dept_id, salarydesc
对部门id 以及 岗位进行合并,并按照部门id进行升序
思路说明:concat进行字段合并,合并之后需要字符类型,无法正常排序,只截取数字的进行排序
-- substr(要截取的字段,从哪里开始截取,截取的长度)select*,
concat(dept_id,"_",position)as dept_posfrom empORDERBY SUBSTR(dept_pos,1,2)
按照销售的薪资进行排序,如果不是销售 按照入职时间进行排序
思路说明:order by后面可以写case when语句
select*from emporderbyCASEWHEN position="销售"then salaryELSE induction_dateend
按照绩效的多少对员工进行排序,没有绩效的放到最后
思路说明:先判断 绩效 字段是不是 null,如果 返回0,然后按照绩效进行排序
SELECT*FROM(SELECT*,CASEWHEN commissionISNULLTHEN0ELSE1ENDAS is_nullFROM emp) tORDERBY
is_nulldesc,
commission