我在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
然而,通过降低性能顺序。这是正常的,还是有其他方法可以提高性能。
答案 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是一行