Oracle 的 rownum 和 rowid

Oracle 的 rownum 和 rowid

表为

idname
1jack
2jim
3alice
4bob
5dam

ROWNUM

sql:select * from table1 where ROWNUM=1;

输出:1 jack

sql:select * from table1 where ROWNUM=2;

输出:空

sql:select * from table1 where ROWNUM<3;

输出:1 jack;2 jim

sql:select * from table1 where ROWNUM>3;

输出:空

sql:select * from table1 where ROWNUM=1 or ROWNUM>2;

输出:1 jack

​ rownum是伪列,是逻辑存在的。先查询到符合要求的结果集,然后再加上rownum列,它永远从1开始。所以如果 where 条件里跳过了ROWNUM=1的值,比如直接写成 ROWNUM>3,那么将永远没有满足条件的值。

​ 如果一定要使用 where ROWNUM>3,需要把rownum显式地生成为普通一列

select * from (select rownum, table.* from table) where rownum>3;

ROWID

​ rowid也是伪列,但它是物理存在的,任何一条数据在oracle中创建的时候就会默认生成一个rowid,固定且唯一

sql:select rowid from table1;

输出
在这里插入图片描述

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值