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