Oracle分页查询问题。rownum问题。 本帖最后由 w091b 于 2012-12-20 16:28:20 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 ROWNUM只适用于小于或小于等于,如果进行等于判断,那么只能等于1,不能进行大于的比较。ROWNUM的返回很简单,ROWNUM总是从1开始,不管当前的记录是否满足查询结果,ROWNUM返回的值都是1,如果这条记录的值最终满足所有的条件,那么ROWNUM会递加,下一条记录的ROWNUM会返回2,否则下一条记录的ROWNUM仍然返回1。理解了这一点,就清楚为什么一般的ROWNUM大于某个值或等于某个不为1的值是无法返回结果的,因此对于每条记录的ROWNUM都是1,而ROWNUM为1不满足查询的结果,所以下一条记录的ROWNUM不会递增,仍然是1,因此所有的记录都不满足条件。 rownum 不是 my_table 中的字段, 可以理解为一个递增的常量。这样的话,在where 中时取不到rownum 的值的select * from ( select my_table.*,rownum my_rownum from ( select student_id,NAME from student union select student_id,cno from sc )my_table where rownum<21 )where my_rownum>10 这种写法是间接的把rownum 变成子查询中的一个字段,所以你可以查出来数据 那那个my_rownum是什么,其什么作用啊,欢迎积极回答啊,圣诞快乐! 额....rownum my_rownum , 是 rownum 别名.. 间接的变成了子查询的一个字段.. 初学者,请多多指教!别名我懂,但是为什么这么用?为什么别名之后就可以用大于号啊,一楼大哥说的:(ROWNUM只适用于小于或小于等于,如果进行等于判断,那么只能等于1,不能进行大于的比较。) rownum取一个别名 再嵌套一层 rownumb值从1开始,简单的可以理解,有1,才会有2,依次类推。所以rounum>=1 ,rounum=1,rownum<=n 都可以返回出数据而oracle使用rownum分组是利用这个序号将其实例化,如楼主提到的蓝色字体:rownum my_rownum 这样根据排序字段确定的my_rownum就是固定值,从而可以任意取范围了。 ORA-06550 PLS-00306的问题 请大虾们帮忙看看! 关于oralce 进程 Oracle多张表整成一张表 请教如何正确执行带有返回参数的存储过程 oracle sequence 尚未在此会话中定义?? 求助sql不会写了,请大家帮着看看?在线等 关于报关BOM表的比例查询. 在树形结构中,怎么样用一个SQL语句选出当前项的所有子项??? “ORA-22990:LOB定位器无法扩展事务处理”是怎么会事,怎么解决 急!急!急! Delphi+Oracle存储过程(多少分都行,在线等...) 创建表的storage的问题 一个简单触发器报错
ROWNUM的返回很简单,ROWNUM总是从1开始,不管当前的记录是否满足查询结果,ROWNUM返回的值都是1,如果这条记录的值最终满足所有的条件,那么ROWNUM会递加,下一条记录的ROWNUM会返回2,否则下一条记录的ROWNUM仍然返回1。
理解了这一点,就清楚为什么一般的ROWNUM大于某个值或等于某个不为1的值是无法返回结果的,因此对于每条记录的ROWNUM都是1,而ROWNUM为1不满足查询的结果,所以下一条记录的ROWNUM不会递增,仍然是1,因此所有的记录都不满足条件。
这样的话,在where 中时取不到rownum 的值的
select * from
(
select my_table.*,rownum my_rownum from
(
select student_id,NAME from student
union
select student_id,cno from sc
)my_table where rownum<21
)where my_rownum>10 这种写法是间接的把rownum 变成子查询中的一个字段,所以你可以查出来数据
那那个my_rownum是什么,其什么作用啊,欢迎积极回答啊,圣诞快乐!
所以rounum>=1 ,rounum=1,rownum<=n 都可以返回出数据而oracle使用rownum分组是利用这个序号将其实例化,如楼主提到的蓝色字体:
rownum my_rownum 这样根据排序字段确定的my_rownum就是固定值,从而可以任意取范围了。