作者:java_wxid
#进阶3:排序查询
语法:
select 查询列表——————③
from 表名——————①
where 条件——————②
order by 排序列表 asc|desc;——————④
特点:
1、
asc代表的是升序。升序是默认行为
desc代表的是降序。
2、排序列表支持单个字段、表达式、函数、别名,也支持以上的组合
3、order by子句一般放在查询语句的最后!
#1、通过单个字段进行简单的排序 #案例;按工资降序 SELECT * FROM employees ORDER BY salary DESC; #2、通过表达式进行排序 #案例:查询员工编号>110的姓名、编号、年薪,并且按年薪升序 SELECT last_name,employee_id,salary*12*(1+IFNULL(commission_pct,0)) FROM employees WHERE employee_id>110 ORDER BY salary*12*(1+IFNULL(commission_pct,0)); #3、通过别名进行排序 #案例:查询员工编号>110的姓名、编号、年薪,并且按年薪降序 SELECT last_name,employee_id,salary*12*(1+IFNULL(commission_pct,0)) 年薪 FROM employees WHERE employee_id>110 ORDER BY 年薪 DESC; #4、通过函数的结果进行排序 #案例:按姓名的长度进行升序 SELECT LENGTH(last_name) len,last_name FROM employees ORDER BY len; #5、支持按多个字段或多个表达式排序 #案例:先按姓名的长度进行升序,然后再按姓名的字符进行降序 SELECT LENGTH(last_name) len,last_name FROM employees ORDER BY len,last_name DESC; #1. 查询员工的姓名和部门号和年薪,按年薪降序 按姓名升序 SELECT last_name,department_id,salary*12*(1+IFNULL(commission_pct,0)) 年薪 FROM employees ORDER BY 年薪 DESC,last_name ASC; #2. 选择工资不在 8000 到 17000 的员工的姓名和工资,按工资降序 SELECT last_name,salary FROM employees WHERE salary NOT BETWEEN 8000 AND 17000 ORDER BY salary DESC; #3. 查询邮箱中包含 e 的员工信息,并先按邮箱的字节数降序,再按部门号升序 SELECT * FROM employees WHERE email LIKE '%e%' ORDER BY LENGTH(email) DESC,department_id ASC;