oracle使用rownum伪列可以实现分页,三表连接分页示例代码如下:
select * from (select rownum r,k.kch,k.kcm,cj.cj,x.xh,x.xm from KCB k,CJB cj,XSB x where k.kch = cj.kch and cj.xh = x.xh and rownum<=10) where r>0
特别注意这样外层查询时由于内层查询的字段有重复列名,所以内层查询最后不要用*。取完每一个表字段,这样很容易报错(“无效字段”)
多表连接最好一次从数据库中取出,在前台分页,否则每次做连接很耗费资源的。
从技术上你的写法也是对的:
select * from (select rownum as r,u.userid,u.userid,u.loginName,t.content from userinfo u,twitter t where u.userid=t.userid and loginname like '%java%')t where rownum<= currentPage*pageSize and rownum<= (currentPage+1)*pageSize
你试下。
select * from (select rownum as r,u.userid,u.userid,u.loginName,t.content from userinfo u,twitter t where u.userid=t.userid and loginname like '%java%' and rownum <4 )t where r > 2;
实际效果要看Oracle 优化以后的
不过,从理论上来说,2好一些,因为提前做了关联取的集合较小
Oracle是建议先将小集合进行关联的,然后在针对rowid进行排序
楼主是不是可以考虑写个视图。然后根据视图去分页。我觉得这样会好些哦