select * from test limit 2,10;
このステートメントの意味: 3 ステートメントから始まり、合計 10< /span> ステートメントを表示しました。
select * from test limit a,b;
a=0、最初のレコード。
a=1、2 番目のレコード。
a=2、3 番目のレコード。
このステートメントの意味: a+1 ステートメントからクエリを開始し、合計 b ステートメント。
合計Record_num 個のデータがある場合、 ページ単位で表示したい a> 、
1 ページあたり 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
2 ページ目の最初のデータ: c=1+rnpp;
3 ページ目の最初のデータ: 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;