oracle rownum

本文深入探讨了Oracle数据库中ROWNUM的定义、作用和使用方法,特别是如何通过ROWNUM实现数据分页和获取特定范围内的数据。通过实例展示了ROWNUM在SQL查询中的巧妙运用,帮助开发者更高效地进行数据检索。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

       oracle的rownum是可以通过select rownum ... from ... 选择出来的,它不是表本身的属性,它是一个伪列,当有一条记录被查询出来时,它的rownum就是1,有第二条记录出来时,rownum就为2。 也就是说它是当结果集被返回时才赋予的,

      比如 select rownum,pesn_id from person where sex='woman'

       与 select rownum,pesn_id from person where sex='man'  这两条sql语句返回的值完全不一样,但是rownum始终是从1开始递增的。

 

       我们去sql语句的第一条记录时会用到where rownum=1 ,但是rownum>5不会出现任何数据,这不是语句出错,而是查不到结果。如上,只有当第一条记录返回时rownum才会加1,但rownum=1的这条结果是不满足rownum>5这个条件的,所以不会查询出来。而第二条记录返回时,由于rownum=1的记录没有所以这条记录的rownum依旧为1,同样的其他记录也不会选出来。

       这就是为什么rownum 的大于条件不会出数据,而小于会出数据,包括=,!=,>=,<=等;


       因为rownum 的特性,它是不能用来直接排序的

            select rownum as num,cot_gw_cont,gwcon_key,create_date from    cot_gw_main   order by gwcon_key


     必须使用子查询

             select rownum,cot_gw_cont,gwcon_key,create_date from  ( select * from    cot_gw_main   order by gwcon_key) 

         

      如果要取返回数据的第m(M>1)行到第n行,oracle没有mysql的limit,通常的方法就是利用上面讲的子查询,先选出rownum<n的数据,然后再已有数据的基础上选出rownum>m的数据(这是rownum已经存在,就会有记录)

          select num,cot_gw_cont,gwcon_key,create_date from
               ( select rownum as num,cot_gw_cont,gwcon_key,create_date from    cot_gw_main where rownum<10  order by gwcon_key )   
              where  num>5

      注意:子查询的rownum必须换名,不然父查询依然没有数据



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值