order by 某字段,第N页和第N+1页的数据是一样的,这是怎么回事? sql 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 在排序字段后再加上rowid排序order by d.doc_year desc,ROWID字段值相同的时候的排序,这些记录的先后顺序取决于数据读取的先后,因此这样取出的结果可能每次排序都不是一样的稳妥起见,在排序的后面加上rowid或是表的主键 这个我也有想过,所以后来我在orderby 后面又直接加了主键。但是,我依然不太明白,为什么会这样。虽然你说“记录的先后顺序取决于数据读取的先后”,但是我加了那个rownum啊。麻烦版主能再详细说两句。 首先第N页和第N+1页的数据获取是执行了两次查询得到的结果这两次查询中查询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得到的结果顺序有可能是不一样的,也就是说再用rownum筛选前的结果就是不一样的 那现在的问题是,两页的数据内容一模一样,是不是Oracle在执行的时候直接获取上一次的数据结果?不然按你的说法,后一页至少会有部分数据不一样啊。 那现在的问题是,两页的数据内容一模一样,是不是Oracle在执行的时候直接获取上一次的数据结果?不然按你的说法,后一页至少会有部分数据不一样啊。如果你这两页的doc_year全部相同的话不排除有这个可能 那现在的问题是,两页的数据内容一模一样,是不是Oracle在执行的时候直接获取上一次的数据结果?不然按你的说法,后一页至少会有部分数据不一样啊。如果你这两页的doc_year全部相同的话不排除有这个可能如你所说,这两页的doc_year是相同的。我现在假设有三页doc_year都是相同的,那么我点击第一页后,再点击第二页,这时是不是又进行了排序了呢?就算每次排序后顺序可能不一样,但如果第二页跟第一页的内容一模一样的话,就应该不能用排序顺序不一样来解释了吧。 那现在的问题是,两页的数据内容一模一样,是不是Oracle在执行的时候直接获取上一次的数据结果?不然按你的说法,后一页至少会有部分数据不一样啊。如果你这两页的doc_year全部相同的话不排除有这个可能如你所说,这两页的doc_year是相同的。我现在假设有三页doc_year都是相同的,那么我点击第一页后,再点击第二页,这时是不是又进行了排序了呢?就算每次排序后顺序可能不一样,但如果第二页跟第一页的内容一模一样的话,就应该不能用排序顺序不一样来解释了吧。这个是数据缓冲区的问题,由于第一次结果已经在缓冲区了,第一次查询的结果恰好也可以作为第二次查询的结果,数据库就直接从缓冲区返回结果了 那现在的问题是,两页的数据内容一模一样,是不是Oracle在执行的时候直接获取上一次的数据结果?不然按你的说法,后一页至少会有部分数据不一样啊。如果你这两页的doc_year全部相同的话不排除有这个可能如你所说,这两页的doc_year是相同的。我现在假设有三页doc_year都是相同的,那么我点击第一页后,再点击第二页,这时是不是又进行了排序了呢?就算每次排序后顺序可能不一样,但如果第二页跟第一页的内容一模一样的话,就应该不能用排序顺序不一样来解释了吧。这个是数据缓冲区的问题,由于第一次结果已经在缓冲区了,第一次查询的结果恰好也可以作为第二次查询的结果,数据库就直接从缓冲区返回结果了根据你所说的,我再查询了相关资料及作了实验。现在我还有最后一个问题:比如第一页的第一条数据A的rownum为1,那么要出现上述问题,到了第二页的时候,A的rownum如何变为为16(假设一页15条数据)?因为在翻页的时候那个select表的语句是没有更改的,那么rownum应该也是不会有变化的啊。求解。 请问个关于查询的问题,关于时间套叠的! 无法加载 DLL“OraOps9.dll”: 找不到指定的模块。 (异常来自 HRESULT:0x8007007E)。 Googleb不到的Oracle基本问题 问个简单的查询问题 [求助]请教高手跨表查询的问题 ! 请教 数据库导出失败 如果加密oracle的自定义函数和触发器 oracle数据库问题? 谁能解决,给分100,迷惑不解 【请教一个递归汇总SQL】 一个简单的问题 让select dname from dept where deptno=70;有值
order by d.doc_year desc,ROWID
字段值相同的时候的排序,这些记录的先后顺序取决于数据读取的先后,因此这样取出的结果可能每次排序都不是一样的
稳妥起见,在排序的后面加上rowid或是表的主键
虽然你说“记录的先后顺序取决于数据读取的先后”,但是我加了那个rownum啊。麻烦版主能再详细说两句。
这两次查询中查询
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
得到的结果顺序有可能是不一样的,也就是说再用rownum筛选前的结果就是不一样的
如果你这两页的doc_year全部相同的话不排除有这个可能
如果你这两页的doc_year全部相同的话不排除有这个可能
如你所说,这两页的doc_year是相同的。
我现在假设有三页doc_year都是相同的,那么我点击第一页后,再点击第二页,这时是不是又进行了排序了呢?就算每次排序后顺序可能不一样,但如果第二页跟第一页的内容一模一样的话,就应该不能用排序顺序不一样来解释了吧。
如果你这两页的doc_year全部相同的话不排除有这个可能
如你所说,这两页的doc_year是相同的。
我现在假设有三页doc_year都是相同的,那么我点击第一页后,再点击第二页,这时是不是又进行了排序了呢?就算每次排序后顺序可能不一样,但如果第二页跟第一页的内容一模一样的话,就应该不能用排序顺序不一样来解释了吧。
这个是数据缓冲区的问题,由于第一次结果已经在缓冲区了,第一次查询的结果恰好也可以作为第二次查询的结果,数据库就直接从缓冲区返回结果了
如果你这两页的doc_year全部相同的话不排除有这个可能
如你所说,这两页的doc_year是相同的。
我现在假设有三页doc_year都是相同的,那么我点击第一页后,再点击第二页,这时是不是又进行了排序了呢?就算每次排序后顺序可能不一样,但如果第二页跟第一页的内容一模一样的话,就应该不能用排序顺序不一样来解释了吧。
这个是数据缓冲区的问题,由于第一次结果已经在缓冲区了,第一次查询的结果恰好也可以作为第二次查询的结果,数据库就直接从缓冲区返回结果了
根据你所说的,我再查询了相关资料及作了实验。现在我还有最后一个问题:
比如第一页的第一条数据A的rownum为1,那么要出现上述问题,到了第二页的时候,A的rownum如何变为为16(假设一页15条数据)?因为在翻页的时候那个select表的语句是没有更改的,那么rownum应该也是不会有变化的啊。求解。