MySQL中使用LIMIT进行分页的方法
一、分页需求:
客户端通过传递start(页码),pageSize(每页显示的条数)两个参数去分页查询数据库表中的数据,
那我们知道MySql数据库提供了分页的函数limit m,n,但是该函数的用法和我们的需求不一样,
所以就需要我们根据实际情况去改写适合我们自己的分页语句,具体的分析如下:
mysql中用limit 进行分页有两种方式
例1,假设数据库表student存在13条数据。
代码示例:
语句1:select * from student limit 9,4
语句2:slect * from student limit 4 offset 9
语句1和2均返回表student的第10、11、12、13行 ,
//第一个参数表示从该参数的下一条数据开始,第二个参数表示每次返回的数据条数。
//语句2中的4表示返回4行,9表示从表的第十行开始
比如:
查询第1条到第10条的数据的sql是:select * from table limit 0,10;
对应我们的需求就是查询第一页的数据:select * from table limit (1-1)*10,10;
查询第11条到第20条的数据的sql是:select * from table limit 10,10;
对应我们的需求就是查询第二页的数据:select * from table limit (2-1)*10,10;
查询第21条到第30条的数据的sql是:select * from table limit 20,10;
对应我们的需求就是查询第三页的数据:select * from table limit (3-1)*10,10;
OFFSET使用
SELECT * FROM trom_data LIMIT nNumRecord OFFSET nBaseRow
表示从第nBaseRow行(基于0的索引)(包括该行)开始,取其后的nNumRecord 条记录
二、通过上面的分析,可以得出符合我们需求的分页sql格式是:
select * from table limit (start-1)*pageSize,pageSize;
其中start是页码,pageSize是每页显示的条数。
-
LIMIT 接受一个或两个数字参数。参数必须是一个整数常量。
-
如果给定两个参数,第一个参数指定第一个返回记录行的偏移量,
-
第二个参数指定返回记录行的最大数目。初始记录行的偏移量是 0(而不是 1)
-
为了检索从某一个偏移量到记录集的结束所有的记录行,可以指定第二个参数为 -1:
SELECT * FROM table LIMIT 95,-1; // 检索记录行 96 -last.