1、语法
LIMIT <N-M> OFFSET <M>
2、举例
把所有学生按照成绩从高到低进行排序,把结果集分页,每页3条记录。要获取第1页的记录,可以使用LIMIT 3 OFFSET 0
SELECT id, name, gender, score
FROM students
ORDER BY score DESC
LIMIT 3 OFFSET 0;
结果如下:
通俗解释一下,LIMIT 3 OFFSET 0,表示从第0个数据开始取,然后取3个,结果集的索引是从0开始,这个注意下
id | name | gender | score |
2 | 小红 | F | 95 |
8 | 小新 | F | 91 |
1 | 小明 | M | 90 |
如果要查询第2页,那么我们只需要“跳过”头3条记录,也就是对结果集从3号记录开始查询,把OFFSET设定为3:
SELECT id, name, gender, score
FROM students
ORDER BY score DESC
LIMIT 3 OFFSET 3;
类似的,查询第3页的时候,OFFSET应该设定为6:
SELECT id, name, gender, score
FROM students
ORDER BY score DESC
LIMIT 3 OFFSET 6;
如果原本记录集一共就10条记录,但我们把OFFSET设置为20,查询结果会是一个空的结果集
3、注意
OFFSET是可选的,如果只写LIMIT 15,那么相当于LIMIT 15 OFFSET 0。
在MySQL中,LIMIT 15 OFFSET 30还可以简写成LIMIT 30, 15。
使用LIMIT OFFSET 分页时,随着N越来越大,查询效率也会越来越低。
4、小结
- 使用LIMIT OFFSET 可以对结果集进行分页,每次查询返回结果集的一部分;
- 分页查询需要先确定每页的数量和当前页数,然后确定LIMIT和OFFSET的值。
- 如果要结果集的前10条数据,直接用 LIMIT 15,相当于LIMIT 15 OFFSET 0,即默认第一页