前天去面试,被问到有关数据库分页显示的问题,以为答得还OK 搜了一下相关问题,发现自己没戏了。
数据库分页显示
首先要定义四个变量:
int pageSize:每页显示多少条记录
int pageNow:希望显示第几页
int pageCount:一共有多少页
int rowCount:一共有多少条记录
rowCount 通过 select count(*) from tableName 获得;
以下为oracle中例子,每页10条数据
select sendmethodids,remarks
from (select rownum num,sendmethodids, a remarks from test2)result2
where result2.num >= 1 and result2.num =< 10;
或者
select * from (select rownum r,all_objects.* from all_objects where rownum <=49) t where t.r >= 30;
若需要排序后再取每页数据,则需要多一层循环,如下
select sendmethodids,remarks
from (select rownum num,sendmethodids, a remarks
from (select sendmethodid sendmethodids,remark a
from test2 order by remark) result1) result2
where result2.num >= 1 and result2.num <= 10;
或者
select * from (select rownum r,all_objects.* from all_objects
where rownum <=49 order by object_id) t where t.r >= 30;
select * from (select * from a order by a.id) where rownum < = N
and a.id not in ( select * from (select * from a order by a.id)
where rownum<=M)
MySQL
select * from Tablename t order by t.F1 limit n,m-n+1
select * from DBtest t order by t.F1 limit 300000,20