Java RowNum行为
我在一个表中有6442670条记录,我正在使用 jdbctemplate使用行号一次1000000。 以下是查询Java RowNum行为,java,sql,oracle,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 4
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至700006
6442669至7442669
经过八次迭代后,我在列表中只看到6442668条记录,其中大部分是重复的。
使用rowNum获取记录可以多次获取同一记录吗?尝试在唯一列上使用row\u number而不是rowNum
您没有order by,因此每次迭代中返回的行是任意的。它只在少数数据库上工作,在其他数据库上不工作。我想知道为什么它在不同的数据库中有不同的行为可能是因为在您运行查询时有人删除了一些行?可能是按子选择表中的所有列排序。那么rownum将始终保持不变。相同的行具有不同的行号,但这并不重要,因为它们是相同的。
SELECT *
FROM (SELECT row_number() OVER ( ORDER BY unique_column_s ) rn, e.*
FROM table_name e ) table_name
WHERE rn >= ? and rn <= ?