一、基础知识
1、应用场景:当要显示的数据一页显示不全,需要分页来提交SQL请求时
2、语法:
# offset:为要显示条目的起始索引(MySQL的起始索引都是从1开始,但此处是从0开始)
# size:要显示的条目个数
select 查询字段/条目 # 第 7 步执行
from 表1 # 第 1 步执行
[连接类型 join 表2 # 第 2 步执行
on 连接条件 # 第 3 步执行
where 筛选条件 # 第 4 步执行
group by 分组字段 # 第 5 步执行
having 分组后的筛选 # 第 6 步执行
order by 排序字段] # 第 8 步执行
limit offset,size; # 第 9 步执行
3、注意事项
- limit 语句位于查询语句之后,且其执行顺序也位于最后
- 当 offset 的值从第一条开始时,此时可以将其省略,只写后面的条目个数
二、应用实例
1、查询前五条员工的信息
SELECT *
FROM employees
LIMIT 0,5;
2、查询第11条到第25条员工的信息
SELECT *
FROM employees
LIMIT 10,15;
3、查询有奖金的,并且工资较高的前10名
SELECT *
FROM employees
WHERE commission_pct IS NOT NULL
ORDER BY salary DESC
LIMIT 0,10;
4、查询平均工资最低的部门信息
SELECT *
FROM departments
WHERE department_id=(
SELECT department_id
FROM employees
GROUP BY department_id
ORDER BY AVG(salary) ASC
LIMIT 0,1);
三、总结
1、在具体的应用中使用分页查询时,起始索引应该用变量公式来进行代替
- page 表示页数,即第几页,size 表示每页显示的条目数
- 则第page 页的起始索引号为 : (page - 1)*10
2、实际应用中可以使用如下写法:
select 查询字段
from 表名
limit (page-1)*size,size;