oracle rownum用法关于分页,只要看懂了原理,你就明白了,也算是自己学习过程的一个思考

今天闲来没有多少事情,又想对Linux系统进行了解一下,当然,主要是针对工程大部分需要部署到上面,就先从数据库着手了,当然两者没有多少关系,只是自己的一个顺序罢了。

今天总算是对这个ROWNUM比较的了解。当然这个应该是早就应该了解了的,到现在才清楚一点的认识,也算是有点惭愧吧,

平时在写分页的时候,几乎每一条都用到了ROWNUM,除非是查出数据处理的除外,但是对它都没有一个很好的认识。

首先:ROWNUM就是一个伪列,它是要先生成,在使用,所以如果是再写语句的时候,写错乱了就会出现问题。

第一:比如写一个最简单的,SELECT ROWNUM AS RN, TBL.* FROM TBL,看出点什么?就跟语句跟它加了一个编号而已,

这个编号是一伪编号,当然可能是我的理解还不够到位,不过多写语句之后,还是理解出了一点点。

第二:又来一条SELECT ROWNUM AS RN , TBL.* FROM TBL  WHERE RN>0 AND RN<10
和SELECT ROWNUM AS RN , TBL.* FROM TBL  WHERE ROWNUM>0 AND ROWNUM<10,显然了吧,RN是无效的字符。

这里就可以声明一点就是,一切数据都是从表当中来的,如果你想凭空产生一些,你就要先声明,插入你的结果集当中,
比如:SELECT 'CUSTOM' AS CUSTOM, TBL.* FROM TBL就会出现常量字段,并且所有值都是CUSTOM,只不过这个ROWNUM是oracle的一个数据量给用户使用而已,
在使用的时候,也得先得到数据,他会给你自动排列,(所以这个还是有一个很好的功能,这里虽然说得不伦不类,只是自己的原因,
因为你在写的时候,比如第二点的第二条语句,他就会出来数据,这是为什么?就是可以在后面使用)而不用你去写什么函数啊,
之类的来自己排列一样。所以对于大于(>),小于(<),包括加上等于之类的
都需要注意一下原理就可以了,就跟网上说的很多一样,为什么会写>1的时候,没有数据,

在itput上看到一个很久以前的说法,觉得很好==
OWNUM是一个序列,是oracle数据库从数据文件或缓冲区中读取数据的顺序。它取得第一条记录则rownum值为1,第二条为2,依次类推。如果你用>,>=,=,between...and这些条件,因为从缓冲区或数据文件中得到的第一条记录的rownum为1,则被删除,接着取下条,可是它的rownum还是1,又被删除,依次类推,便没有了数据。
,其实在理解了它是伪列,使用的时候,先查询,后来选择列就没问题了,比如:
select *
from (selet rownum as  rn,t1.* from a where ...)
where rn >10一切搞定。当然,语句写多了,稍微思考一点点,也是可行的。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值