sql(oracle)选择前10个记录,然后是下10个,依此类推

llc*_*lcf 2 sql oracle select

我想我可能只是缺少一些明显的语法但是什么是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)