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;