问题描述:
查询一张表,使之以每页15条数据来显示。可以按照某字段来排序。可问题是,当点击到第4页时发现与第3页的数据内容完全一样。页面上总的数据量是对的,就是某几页内容存在相同。
SQL语句:
select * from (select row_.*,rownum rownum_ from (select doc_seq,doc_title from doc_card d where 1=1 and handover_state =1 and if_store =2 and archive_id=1 and room_id=3 and arc_type=0 order by d.doc_year desc ) row_ where rownum <= 60) where rownum_>45
order by 之后的字段可以随意替换。doc_year不是主键。如果我在order by 之后再加一个主键字段的话就不会出现这种问题了。
我想问的是,是什么原因导致会有重复内容出现?难道order by 还有什么更深入的原理与机制吗?
------解决思路----------------------
这个是数据缓冲区的问题,由于第一次结果已经在缓冲区了,第一次查询的结果恰好也可以作为第二次查询的结果,数据库就直接从缓冲区返回结果了