排序
排序规则
- 使用ORDER BY子句排序,ORDER BY子句在SELECT语句的结尾
- ASC:升序,DESC:降序,默认是按升序排序
- 可以使用不在SELECT列表中的列排序
单列排序
```sql SELECT last_name, job_id, department_id, hire_date FROM employees ORDER BY hire_date DESC;
SELECT employee_id, last_name, salary*12 annual_sal FROM employees ORDER BY annsal;
注意,列的别名只能在ORDER BY中使用,不能在WHERE中使用
报错:Unknown column ‘annual_sal’ in ‘where clause’
执行顺序:FROM WHERE —> SELECT —> ORDER BY
SELECT employee_id, last_name, salary*12 annual_sal FROM employees WHERE annual_sal > 80000;
<a name="o0yqZ"></a>#### 多列排序```sqlSELECT last_name, department_id, salaryFROM employeesORDER BY department_id, salary DESC;
说明:在对多列进行排序的时候,首先排序的第一列必须有相同的列值,才会对第二列进行排序。如果第一列数据中的所有值都是唯一的,将不再对第二列进行排序
分页
实现背景
- 查询返回的记录太多了,查看起来很不方便,想实现分页查询
-
实现规则
使用LIMIT实现分页,格式:
LIMIT [位置偏移量, ] 行数 第一个参数“位置偏移量”指示MySQL从哪一行开始显示,是一个可选参数,如果不指定“位置偏移量”,将会从表中的第一条记录开始(第一条记录的位置偏移量是0,第二条记录的位置偏移量是1,以此类推)
- 第二个参数“行数”指示返回的记录条数
- 分页显示公式:(当前页数 - 1) * 每页条数,每页条数
- 注意:LIMIT子句必须放在整个SELECT语句的最后
```sql
前10条记录
SELECT FROM 表名 LIMIT 0, 10; 或者 SELECT FROM 表名 LIMIT 10;
第11至20条记录
SELECT * FROM 表名 LIMIT 10, 10;
第21至30条记录
SELECT * FROM 表名 LIMIT 20, 10; ```
MySQL8.0中可以使用
LIMIT 3 OFFSET 4,意思是获取从第5条记录开始后面的3条记录
