SQL中limit与分页的结合

select * from test limit 2,10;

这条语句的含义:从第3条语句开始查询,共显示10条语句。

select * from test limit a,b;

a=0,第一条记录。

a=1,第二条记录。

a=2,第三条记录。 

这条语句的含义:从第a+1条语句开始查询,共显示b条语句。 

如果共有Record_num条数据,希望分页显示

每页rnpp条数据,共page_num页,最后一页记录数为lprn。

Record_num=page_num*rnpp+lprn;

已知Record_num,rnpp。

lprn=Record_num%rnpp;
if(lprn==0){page_num=Record_num/rnpp;}
else {page_num=Record_num/rnpp+1;}

现在我想要获取第now_page页的相应数据,如何使用SQL表示?

思考:

相应数据从第几条记录开始,共有多少条?

设相应数据从第c条记录开始,共有b条。

第一页的第一条数据:c=1

第二页的第一条数据:c=1+rnpp;

第三页的第一条数据:c=1+rnpp*2;

第now_page页的第一条数据:c=1+rnpp*(now_page-1);

第now_page页共有多少数据呢?

分情况讨论:

(1)lprn=0,即每一页都有rnpp条数据。

(2)lprn!=0,前page_num-1页都有rnpp条数据,最后一页数据为lprn。

if(lprn==0)b=rnpp;
else{
    if(now_page==page_num)b=lprn;
    else b=rnpp;
}

最后的相关SQL语句:

a=c-1;
select * from test limit a,b;

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

lpl还在学习的路上

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值