mysql的order by 自定义排序 和 union 语句

本文介绍了一种在MySQL中使用自定义字符串排序的方法,通过orderby field函数,可以按学历升序和工作时间降序对员工进行排序,这种方法比union连接更简洁高效。

13. 将Employees表中的员工按学历升序和工作时间降序排序。




方法1.用union连接可得


mysql> (select 姓名,学历,工作时间
    -> from employees
    -> where 学历='大专'
    -> order by 工作时间 desc)
    -> union
    -> (select 姓名,学历,工作时间
    -> from employees
    -> where 学历='本科'
    -> order by 工作时间 desc)
    -> union
    -> (select 姓名,学历,工作时间
    -> from employees
    -> where 学历='硕士'
    -> order by 工作时间 desc);



444



缺点:过于繁琐,在学历分类不多情况下较好用



是否存在其他方法?





MySQL中的排序ORDER BY 除了可以用ASC和DESC,还可以自定义字符串/数字来实现排序。格式如下:

select * from 表名 order by field(列名,‘值1’,‘值2’,.....);



样例

mysql> select 姓名,学历,工作时间
    -> from employees
    -> order by field(学历,'大专','本科','硕士');

111



mysql> select 姓名,学历,工作时间
    -> from employees
    -> order by field(学历,'大专','本科','硕士') desc;

222



mysql> select 姓名,学历,工作时间
    -> from employees
    -> order by field(学历,'大专','本科','硕士') desc ,工作时间 desc;

333



故 用方法2:order by 自定义排序


mysql> select 姓名,学历,工作时间
    -> from employees
    -> order by field(学历,'大专','本科','硕士'),工作时间 desc;

444

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值