我想我可能只是缺少一些明显的语法但是什么是sql(oracle)来选择前10个记录,然后是下一个10,依此类推?
我尝试使用rownum,但似乎得到rownum> X和rownum <Y工作.
LLCF
Thi*_*ilo 13
只有一种相当复杂的方法才能做到这一点,这对Oracle来说真的很痛苦.他们应该只实现LIMIT/OFFSET条款......
在由where子句选择行之后,where rownum > x将为rownum分配,因此rownum必须始终以1开头.将始终求值为false.
此外,rownum 在排序完成之前被分配,因此rownum与订单的顺序不同.
您可以使用子选择来解决这两个问题:
select a,b,c, rn from
( select a,b,c, rownum rn from
( select a,b,c from the_table where x = ? order by c)
where rownum < Y)
where rn > X
Run Code Online (Sandbox Code Playgroud)
如果您不需要排序(但只有那时),您可以简化为
select a,b,c, rn from
( select a,b,c, rownum rn from the_table where rownum < Y )
where rn > X
Run Code Online (Sandbox Code Playgroud)