oracle 之 伪列 rownum 和 rowid的用法与区别

Posted zmztyas

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了oracle 之 伪列 rownum 和 rowid的用法与区别相关的知识,希望对你有一定的参考价值。

rownum的用法

select  rownum,empno,ename,job from emp where rownum<6

可以得到小于6的值数据

select rownum,empno,ename,job from emp where rownum>6 and rownum<10

得不到数据  原因:oracle 中首先会产生编号为1的数据,也就是不满足条件,那么后面的同样会继续产生第二条数据同时也是编号为1,所以最后得不到数据

解决方案:可以将select rownum,empno,ename,job from emp变成一个子查询

rowid的用法   可以去重复数据

同rownum伪列不同的是,他是物理存在,rowid是一种数据类型,基于64位编码的18个字符来唯一标志一条记录物理位置的一个id,rowid可以在表中进行查询,但是其值并未存储在表中,所以不支持增删改操作

例如:有两条一模一样的数据

delete from TableName where rowid not in (select min(rowid) from TableName group by 列名

 

以上是关于oracle 之 伪列 rownum 和 rowid的用法与区别的主要内容,如果未能解决你的问题,请参考以下文章

Oracle伪列(ROWNUM)的使用

Oracle 的伪列

Oracle中的伪列

Oracle-数据伪列ROWNUM, ROWID

Oracle中的伪列

(转)Oracle中的rownum,ROWID的 用法