RowNum行为

时间:2017-11-30 13:20:38

标签: java sql oracle

我在表中有6442670条记录,我正在使用它们 jdbctemplate 一次使用行号1000000。 以下是查询

select * 
from (select rowNum rn
             , e.* 
      from table_name e) table_name  
where rn >= ? and rn <= ?

我正在进行八次迭代

  
      
  • 0至1000000
  •   
  • 1000001至2000001
  •   
  • 2000002至3000002
  •   
  • 3000003至4000003
  •   
  • 4000004至5000004
  •   
  • 5000005至6000005
  •   
  • 6000006至7000006
  •   
  • 6442669至7442669
  •   

经过八次迭代后,我在列表中只看到6442668条记录,其中大部分是重复的。 可以使用rowNum获取记录多次获取相同的记录吗?

1 个答案:

答案 0 :(得分:1)

尝试使用row_number() over个唯一列而不是ROWNUM

SELECT *
  FROM (SELECT row_number() OVER ( ORDER BY unique_column_s ) rn,  e.*
          FROM table_name e ) table_name
 WHERE rn >= ? and rn <= ?