MySQL中limit的详细用法

创作缘由

在做一次面试题的时候,遇到此类问题,但limit具体细节记不太清,特来强化一波,废话不多说,进入主题

limit的详细用法

1、用于强制返回指定的记录数

在查询中,经常要返回前几条或者中间某几行数据时,用到limit

语法如下

select * from table_name limit [offset,] rows

参数解释

offset:指定第一个返回记录行的偏移量(即从哪一行开始返回)。注意:初始行的偏移量为0.

rows:返回具体行数。

注意:当第二个参数为-1时,表示查询从当前偏移量所在的记录到最后一条记录。

总的来说,如果limit后面是一个参数,就是检索前多少行。如果是2个参数,就是从offset+1行开始,检索rows行记录。

例如:

select * from table_name limit 10;//检索前10行记录
select * from table_name limit 5 ,10;//从第6行开始,检索10行记录,即:检索记录行 6-15 

2、分页

客户端通过传递start(页码)pageSize(每页显示的条数)两个参数去分页查询数据库表中的数据,那我们知道MySql数据库提供了分页的函数limit m,n,但是该函数的用法和我们的需求不一样,所以就需要我们根据实际情况去改写适合我们自己的分页语句,具体的分析如下:

比如:

查询第1条到第10条的数据的sql是:select * from table limit 0,10;   ->对应我们的需求就是查询第一页的数据:select * from table limit (1-1)*10,10;

查询第10条到第20条的数据的sql是:select * from table limit 10,10;  ->对应我们的需求就是查询第二页的数据:select * from table limit (2-1)*10,10;

查询第20条到第30条的数据的sql是:select * from table limit 20,10;  ->对应我们的需求就是查询第三页的数据:select * from table limit (3-1)*10,10;

总结:

通过上面的分析,可以得出符合我们需求的分页sql格式是:select * from table limit (start-1)*pageSize,pageSize; 其中start是页码,pageSize是每页显示的条数。

以上适合数据量较小时适用,当数据量大时,采用子查询速度较快。具体参考下文:分页查询优化

注:以上内容参考https://blog.csdn.net/qq_26599807/article/details/79240435

由于本人目前还处在菜鸟阶段,以上内容如有问题,请在评论区指出,谢谢!

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值