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);
缺点:过于繁琐,在学历分类不多情况下较好用
是否存在其他方法?
MySQL中的排序ORDER BY 除了可以用ASC和DESC,还可以自定义字符串/数字来实现排序。格式如下:
select * from 表名 order by field(列名,‘值1’,‘值2’,.....);
样例
mysql> select 姓名,学历,工作时间
-> from employees
-> order by field(学历,'大专','本科','硕士');
mysql> select 姓名,学历,工作时间
-> from employees
-> order by field(学历,'大专','本科','硕士') desc;
mysql> select 姓名,学历,工作时间
-> from employees
-> order by field(学历,'大专','本科','硕士') desc ,工作时间 desc;
故 用方法2:order by 自定义排序
mysql> select 姓名,学历,工作时间
-> from employees
-> order by field(学历,'大专','本科','硕士'),工作时间 desc;