MySQL排序查询
我们已经学习完条件查询语句,接下来我们涉足排序语句的查询,跟上我的步伐!
进阶三:排序查询
引入: select *from employees;
语法: select 查询列表 from 表 【where 筛选条件】 order by 排序列表【asc | desc】
特点:
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
年薪 asc;
查询结果
案例4:按姓名的长度显示员工的姓名和工资和字节长度【按函数倒序】
查询代码
SELECT
last_name,salary,LENGTH(last_name) AS 姓名字节长度
FROM
employees
ORDER BY
姓名字节长度 DESC;
查询结果
案例5:查询员工信息,要求先按工资降序,再按员工编号降序
查询代码
SELECT
*
FROM
employees
ORDER BY
salary DESC,employee_id ASC
查询结果
测试题
1.查询员工的姓名和部门号和年薪,按年薪降序,按姓名升序
代码
SELECT
last_name,department_id,salary*12*(1+IFNULL(commission_pct,0)) AS 年薪
FROM
employees
ORDER BY
年薪 DESC,last_name ASC;
结果
2.选择工资不在8000到17000的员工的姓名和工资,按工资降序
代码
SELECT
last_name,salary
FROM
employees
WHERE
!(salary 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;
结果