Oracle中的分页( rownum 使用 )

    xiaoxiao2025-01-30  91

    首先清楚–语句写的顺序:select … from… where… group by… having… order by… –执行顺序:from… where…group by… having… select … order by…

    ---oracle中的分页 --rownum行号:当我们做select操作的时候, --每查询出一行记录,就会在该行上加上一个行号, --行号从1开始,依次递增,不能跳着走。 ---emp表工资倒序排列后,每页五条记录,查询第二页。 --排序操作会影响rownum的顺序,因为是select先执行,然后再排序 select rownum,e.* from emp e order by e.sal desc

    --如果涉及到排序,但是还是要使用rownum的话,我们可以再次嵌套查询。 select rownum,t.* from( select rownum,e.* from emp e order by e.sal desc) t;

    –rownum行号不能写上大于一个正数

    ---emp表工资倒序排列后,每页五条记录,查询第二页。 --写的顺序:select ... from... where.... group by... having... order by.. --执行顺序:from... where...group by... having.... select ... order by... --rownum行号不能写上大于一个正数 select rownum,e.* from(select * from emp order by sal desc) e where rownum<11

    能查出来

    select rownum,e.* from(select * from emp order by sal desc) e where rownum<11 and rownum>5;

    却查不出来 因为先执行的是where条件, rownum行号:当我们做select操作的时候, –每查询出一行记录,就会在该行上加上一个行号, –行号从1开始,依次递增,不能跳着走。小于11满足但是大于5就不满足了

    但是可以下面这样:

    select * from( select rownum rn,tt.* from( select * from emp order by sal desc ) tt where rownum<11) tt where rn >5;

    最新回复(0)