Oracle中rownum的行为

时间:2015-06-18 06:56:06

标签: sql oracle oracle11g sql-order-by rownum

我在Oracle中使用静态表观察了ROWNUM的奇怪行为。我正在尝试与下面的查询分页

select * from (
     select the_data,rownum as seqn from the_table  
  )  where seqn <= somenumber and seqn >= othernumber

然而,当我多次执行查询时,我发现返回的rownum值对于一行来说并不是唯一的,即如果第一次出现在rownum 25上的行第二次出现在rownum 125中进行第二次执行

如果我按照“

”执行订单,则不会出现此问题
select * from (
     select the_data,rownum as seqn from the_table order by column3 
  )  where seqn <= somenumber and seqn >= othernumber

然而,通过降低性能顺序。这是正常的,还是有其他方法可以提高性能。

1 个答案:

答案 0 :(得分:-1)

您应该检查oracle文档以查找此问题。以下链接可能对您有所帮助http://docs.oracle.com/cd/E11882_01/server.112/e41084/functions156.htm#SQLRF06100  

One example: 
SELECT * FROM ( SELECT ROW_NUMBER() OVER () AS R, T.* FROM T ) AS TR WHERE R <= 10;


T是表名。 R是一行