SQL分页查询

分页查询

1、limit start,count语法

select * from 表名 limit start,count

说明:

limit是分页查询关键字
start表示开始行索引,默认是0
count表示查询条数

例1:查询前3行男生信息:

select * from students where gender=1 limit 0,3;

类比:

已知每页显示m条数据,求第n页显示的数据

提示: 关键是求每页的开始行索引

查询学生表,获取第n页数据的SQL语句:

select * from students limit (n-1)*m,m

2、LIMIT OFFSET 语法

分页实际上就是从结果集中“截取”出第M~N条记录。这个查询可以通过LIMIT <N-M> OFFSET <M>子句实现

例:

我们把结果集分页,每页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条。注意SQL记录集的索引从0开始。

如果要查询第2页,那么我们只需要“跳过”头3条记录,也就是对结果集从3号记录开始查询,把OFFSET设定为3:

SELECT id, name, gender, score
FROM students
ORDER BY score DESC
LIMIT 3 OFFSET 3;

3、子查询分页

越往后分页,LIMIT语句的偏移量就会越大,速度也会明显变慢。此时,我们可以通过子查询的方式来提高分页效率,大致如下:

SELECT * FROM students WHERE  id >=  
(SELECT id FROM students  WHERE book_id = 123 ORDER BY id LIMIT 10000, 1) LIMIT 10 

4、JOIN分页方式

SELECT * FROM `content` AS t1   
JOIN (SELECT id FROM `content` ORDER BY id desc LIMIT ".($page-1)*$pagesize.", 1) AS t2   
WHERE t1.id <= t2.id ORDER BY t1.id desc LIMIT $pagesize; 
posted @ 2022-01-09 12:07  泰初  阅读(2834)  评论(0编辑  收藏  举报