oracle分页问题,rownum<?这个条件可以提前吗?

selectxx.*from(x.*,rownumnoform(...)xwhereno<?)xxwherexx.no>?//这个写法分页数据会有重复,请问下是什么原因s... select xx.* from ( x.*,rownum no form (...) x where no<?) xx where xx.no>? //这个写法分页数据会有重复,请问下是什么原因
select xx.* from (x.*,rownum no from(...)x ) xx where xx.no<? and xx.no>? 这种写法是好的
展开
 我来答
woshidaniel
推荐于2016-09-18 · TA获得超过9241个赞
知道小有建树答主
回答量:1760
采纳率:96%
帮助的人:940万
展开全部
x.*,rownum no form (...) x where no<?

这里rownum是结果集的序号,也就是no<多少 就取多少数据。永远取不到区间记录集。
(x.*,rownum no from(...)x ) xx where xx.no<? 这里再用xx.no的时候,rownum相当于所有结果集先按行号排序,在根据行号获取大于多少行号和小于多少行号的区间记录集
追问
x.*,rownum no form (...) x where no<? 这个的no是按结果接标记序号,取小于多少条的数据
(x.*,rownum no from(...)x ) xx where xx.no<? 这个不也是按结果集标记序号,他们标记的序号都应该一样的吧?只不过上面那种只标记到上限就停止了
追答
第一句不一样,比如有1000条数据,你要去200到300的记录,第一句是取前200的记录,大于200是取不到的,因为结果集还没生成,rownum没有大于200
第二句,已经生成了结果集,这时候rownum是从1排到1000的,这时候可以取到200到300
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式