下面是所有数据:

我在执行下面的SQL时出来5条检索结果:
SELECT *
FROM (SELECT A.*, ROWNUM RN
FROM (select formual.opercharacter,
formual.subject,
...
from formual
where ...
order by formual.opercharacter desc) A
WHERE ROWNUM <= 5)
WHERE RN >= 1;
结果:

然后执行另一个SQL的时候,结果如下:
SELECT *
FROM (SELECT A.*, ROWNUM RN
FROM (select formual.opercharacter,
formual.subject,
...
from formual
where ...
order by formual.opercharacter desc) A
WHERE ROWNUM <= 10)
WHERE RN >= 6;
结果:

其实主要就是翻页的问题,我想问的是,为什么检索出来的结果会有重复数据?总的条数又是正确的,但是却有两条数据没有检索出来(也就是被重复的数据给冲掉了)?
我觉得是order by 子句中字段值不唯一导致的,因此我把opercharacter 修改成 subject后就没有问题了,但是还是不明白为什么。
求大神赐教~~
------解决思路----------------------
好像oracle对此解释是正常的,因为是两次查询。
一般排序字段不唯一的时候,为了保证多次查询不出现重复记录,排序需要再加上能保证查询唯一的列如主键。
------解决思路----------------------
因为你所排序字段不唯一,可以在你的排序字段之后加上,rowid排序。
order by ...,rowid