1. 排序数据
1.1 排序规则
- ASC(ascend): 升序
- DESC(descend):降序
- ORDER BY子句在SELECT语句后面
1.2 单列排序
SELECT last_name, job_id, department_id, hire_date
FROM employees
ORDER BY hire_date; 时间从先到后
SELECT last_name. job_id, department_id, hire_date
FROM employees
ORDER BY hire_date DESC;
1.3多列排序
- 可以使用不在 SELECT 列表中的列排序
- 在对多列进行排序的时候,首先排序的第一列必须有相同的列值,才会对第二列进行排序,如果第一列数据中所有值都是唯一的,将不再对第二列进行排序。
SELECT last_name, department_id, salary
FROM employees
ORDER BY department_id, salary DESC;
2. 分页
MySQL中使用 LIMIT 实现分页
格式:
- LIMIT [位置偏移量,] 行数
- 分页显示公式:(当前页数-1)*pageSize,PageSize;
--第21至40条记录
SELECT * FROM 表名 LIMIT 20,20;
-- MySQL 8.0中可以使用“LIMIT 3 OFFSET 4”,意思是获取从第5条记录开始后面的3条记录,和“LIMIT
-- 4,3;”返回的结果相同
3.联系
- 查询员工的姓名和部门号和年薪,按年薪降序,按姓名升序显示
SELECT last_name, department_id, salary * 12 AS annual_sal FROM employees
ORDER BY annual_sal DESC,last_name ASC;
- 选择工资不在 8000 到 17000 的员工的姓名和工资,按工资降序,显示第21到40位置的数据
SELECT last_name, salary FROM employees WHERE salary NOT BETWEEN 8000 AND 17000
ORDER BY salary DESC
LIMIT 21,40;
- 查询邮箱中包含 e 的员工信息,并先按邮箱的字节数降序,再按部门号升序
SELECT last_name,department_id,emain FROM employees
WHERE last_name LIKE '%e%'
ORDER BY LENGTH(email) DESC,department_id ASC;