MySQL常见的几种排序类问题

总结几个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

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值