永发信息网

oracle分页问题,rownum<?这个条件可以提前吗?

答案:2  悬赏:80  手机版
解决时间 2021-02-02 06:11
select xx.* from ( x.*,rownum no form (...) x where no? //这个写法分页数据会有重复,请问下是什么原因
select xx.* from (x.*,rownum no from(...)x ) xx where xx.no? 这种写法是好的
最佳答案
x.*,rownum no form (...) x where no
这里rownum是结果集的序号,也就是no<多少 就取多少数据。永远取不到区间记录集。
(x.*,rownum no from(...)x ) xx where xx.no
全部回答
  • 1楼网友:从此江山别
  • 2021-02-01 10:51
rownum是oracle预处理字段,默认标序是1,只有记录集已经满足条件后才会进行后续编号。由于第一条记录rownum默认是1,而你的条件是rownum>=6 对第一条记录比较它的rownum肯定不大于6 所以不满足条件 oracle舍弃第一条记录将数据库第二条记录标序为1再进行比较 肯定都不满足rownum>=6 这样循环也就是说由于没有记录满足rownum>=6所以记录一直被舍弃,rownum一直是1 。 排序方法: select * from ( select a1.*, rownum rwn from emp a1 where rownum <=10 ) where rwn >= 6; 或者 select * from ( select qx.*,row_number() over(order by qx.empno) rwn from emp qx ) where rwn between 6 and 10
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯