一、排序查询
1、语法
select 查询列表
from 表名
【where 筛选条件】
order by 排序列表 【asc | desc】;
asc 升序,默认值,可以省略;desc 降序;
2、特点
(1)asc 升序,desc 降序,如果不写,默认是升序;
(2)order by 子句中可以支持单个字段,多个字段,表达式,函数,别名
(3)order by 子句一般是放在查询语句的最后面,但是 limit 子句除外
二、案例
1、按照单个字段排序
要求:查询员工信息,要求工资从高到低排序
SELECT
*
FROM
employees
ORDER BY salary DESC ;
2、添加筛选条件
要求:查询部门编号大于等于90的员工信息,按照入职时间先后进行排序
SELECT
*
FROM
employees
WHERE department_id >= 90
ORDER BY hiredate ASC ;
3、按表达式排序
要求:按年薪的高低显示员工的信息和年薪
SELECT
*,
salary * 12 * (1 + IFNULL(commission_pct, 0)) AS 年薪
FROM
employees
ORDER BY salary * 12 * (1 + IFNULL(commission_pct, 0)) DESC ;
4、按照别名排序
要求:按年薪的高低显示员工的信息和年薪
SELECT
*,
salary * 12 * (1 + IFNULL(commission_pct, 0)) AS 年薪
FROM
employees
ORDER BY 年薪 DESC ;
5、按函数排序
要求:按姓名的长度显示员工的姓名和工资
SELECT
LENGTH(last_name) 字节长度,
last_name,
salary
FROM
employees
ORDER BY LENGTH(last_name) ;
也可以根据别名排序:
SELECT
LENGTH(last_name) 字节长度,
last_name,
salary
FROM
employees
ORDER BY 字节长度 ;
6、按多个字段排序
要求:查询员工信息,要求先按照工资降序,再按照员工编号升序
SELECT
*
FROM
employees
ORDER BY salary DESC,
employee_id ASC ;
三、练习
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
*,
LENGTH(email)
FROM
employees
WHERE email LIKE '%e%'
ORDER BY LENGTH(email) DESC,
department_id ASC ;