rownum伪例

本文详细介绍了Oracle数据库中rownum伪列的功能与使用方法,包括如何利用rownum进行结果集的排序、筛选和限制返回行数。特别强调了rownum在大于某数值条件下的实现方式,并解释了rownum<10与rownum!=10结果集相同的原因。

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

1.rownum是个伪列,不属于任何表,所以不可以在其前面加上任何表名

2,rownum是对结果集的编序排列,始终是从1开始

3,rownum只能用于<

select rownum ,empno ,ename,job,mgr,hiredate  
from emp where rownum <2

4,如果要用>实例化就可以了

SELECT empno, ename, job, mgr, hiredate
 FROM (SELECT empno, ename, job, mgr, hiredate, 
     rownum rk
    FROM emp) t
WHERE rk > 2

 

5,为什么不能用>呢?

rownum是依据查询的过程而临时产生的,并不是已在数据库中存在的数据列。

在查询语句的执行中,数据库先查询出结果集,在根据结果集形成对应的rownum,

而且rownum始终是动态的从1开始进行记录的。

6,rownum<10和rownum!=10结果集相同

查找rownum!=10的数据的过程可以这样理解:当查找前9条数据的时候,

rownum都是不等于10的或是可以理解为都是小于10的,

所以结果集会出现这9条数据,而当数据库查到第10条数据的时候,

发现rownum=10而不满足不为10的条件,所以数据库将第十条数据删除形成新的结果集,

而最开始的rownum=11的数据将被补充到第十条数据的位置而被分配了rownum=10,

以此类推,每次删除第十条都被下一条补上而且补上的数据rownum被重新分配为10.

这样的话永远也查不到第十条及其往后的数据。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值