oracle的rowid问题

来源:百度知道 编辑:UC知道 时间:2024/05/17 00:40:38
向oracle中insert数据后,会自动生成一个rowid,然后可以用rownum进行查询,但有个表,我用
select flight from tbl where rownum=1;
可以查出数据,但用:
select flight from tbl_aidp where rownum=2;
或是=3都查不出数据,这是为什么呢?难道只能用:
rownum=1或是rownum<2这些来查询?
另外rowid这个看了一下,例如:它的值为:AAAMIMAAGAABivPAAD
这是什么数字?乱码?还是什么进制数字么?谢谢!

ROWNUM是伪列,开始的时候ROWNUM=1,如果条件符合要求,ROWNUM进入了结果集,接下来ROWNUM才会为2,如果ROWNUM没有进入结果集,也就是ROWNUM=1时不符合条件,接下来ROWNUM还是为1.比如:select flight from tbl_aidp where rownum=2;刚开始的时候ROWNUM为1,不符合条件,ROWNUM还是为1,还是不符合条件...所以ROWNUM一直为1,也就查不出结果.如果是这样:select flight from tbl_aidp where rownum<3;开始ROWNUM为1,符合条件,ROWNUM变成2,也符合条件.查询结果会是正常的.它更像是结果集里的行数.

1.rownum是伪列,在执行select的时候,满足条件查询出一个记录,ORACLE就会给他一个序号,你的条件是rownum为2,第一条记录出来,rownum为1,不满足接着查第二个还是给的1,一直查下去,就没有满足条件的记录了

2.rowid也是伪列,是物理行地址,
他的值表示对象号(6位),文件号(3位),块号(6位),行号(3位)