select * from tshop_companys where company_idin
( select company_id from
(
select rownum rn,company_id from
(select * from tshop_companys where company_type_id = <%=??%> order by company_id)
)
where rn >=startand rn <=endorder by company_id);
假设:我有10条记录 totalConut =10
单页显示记录数为 pageSize = 3
总页数为 pageCount =totalConut/pageSize+1
描述当前页码 pageNum 默认为1
最内部的查询语句:select * from tshop_companys wherecompany_type_id = <%=??%> order by company_id
根据条件company_type_id 查处所有的信息,即结果1
那么 它的外层查询语句就根据结果1,执行查询
select rownum rn,company_id from (结果1) 取的 rownumrn,company_id(结果2)
再外层 select company_id from
(
结果2
)
where rn >= start and rn <= end order by company_id);
根具rownum表示单前结果集的数目的索引 从1开始,
作判断
if(pageNum>0)
{
// 总是先显示第一页;
if(pageNum==1)
{
start = 1;
end =pageNum*pageSize;
temp_pageNum = pageNum;
}
//如果选择显示下一页 比如pageNum=2;
if(pageNum>1&&temp_pageNum<pageNum)
{
start = (pageNum-1)*pageSize+1
end =pageNum*pageSize;
temp_pageNum = pageNum; // 这时temp_pageNum =2 ;
}
//如果选择显示上一页 此时start=4 end = 6
if(temp_pageNum!=1&&temp_pageNum>pageNum)
{
start= start-pageSize;
end =start-1;
}
}
注意:rownum为ORACLE特有的字段,每一条sql语句只能出现一次,嵌套查询时,可以使用别名。