rownum使用注意

实验加google

 

第一.rownum是伪列不能用表的别名去引用,如select t.rownum from xx t ;

       报错:列说明无效

       但是我们可以给他别名 rownum rno

 

第二.rownum是从1开始的,所以选择rownum=2的时候选择不出记录的

 

 

第三.rownum的<是默认成立的,但是>是不成立的,要使用>必须要注意两点:

     1).要使用子查询

     2).要给rownum一个别名

 

 

select * from
(
   select rownum rno, t.id, t.province_code, t.province_name from card_province t 
)
where rno>3

 可以选择大于3的记录

 

第四.如果要选择一个区间的记录,也要使用子查询,注意事项同上三的一二

 

 

select * from
(
   select rownum rno, t.id, t.province_code, t.province_name from card_province t where rownum <10
)
where rno>3

 可以选择3到10之间的数据

 

第五.要使用rownum排序也要使用子查询,如:

 

select rownum ,p.province_code,p.province_name from
(
  select t.province_code,t.province_name from card_province t
  group by t.province_code,t.province_name
)p where rownum <10

 这样所有的记录group by后就是按照rownum排序的了

 

当然我们也可以使用row_number()来选择区间数据

select province_code,province_name from
(
   select province_code,province_name ,row_number()over(order by province_code)as rnum from card_province
)
where rnum between 3 and 10
 但是这两者之间的开销呢?

 

rownum分析

 

我们在看row_number()函数的分析

 

很明显同样的3到10的区间选择使用row_number()函数开销更大

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值