码迷,mamicode.com
首页 > 其他好文 > 详细

ROWID和ROWNUM

时间:2018-12-26 22:26:15      阅读:178      评论:0      收藏:0      [点我收藏+]

标签:HERE   表示   没有   数据   注意   物理   简单   移动   序列   

rownum,rowid都叫伪列。 但是,rownum是逻辑上的编号,且其值总是从1开始,每行的rounum不是固定的。而rowid是“物理”编号。若数据库文件没有移动,则每行的 rowid一般是固定不变的。

因为ROWNUM是对结果集加的一个伪列,即先查到结果集之后再加上去的一个列 (强调:先要有结果集)。简单的说 rownum是对符合条件结果的序列号。它总是从1开始排起的。所以你选出的结果不可能没有1,而有其他大于1的值。

select rownum,c1 from t1 where rownum > 10; 结果什么都没有。

select rownum,c1 from t1 where rownum != 10;有前九条数据。

 

rowid与 rownum 虽都被称为伪列,但它们的存在方式是不一样的,rowid可以说是物理存在的,表示记录在表空间中的唯一位置ID,在DB中唯一。只要记录没被搬动过,rowid是不变的。rowid相对于表来说又像表中的一般列,所以以 rowid 为条件就不会有 rownum那些情况发生。

另外还要注意:rownum不能以任何基表的名称作为前缀。

ROWID和ROWNUM

标签:HERE   表示   没有   数据   注意   物理   简单   移动   序列   

原文地址:https://www.cnblogs.com/freakkkkk/p/10181885.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!