原表如下:
NUM NAME ROWID
1 aa AAAM1CAAEAAAAGkAAA
2 bb AAAM1CAAEAAAAGkAAB
3 cc AAAM1CAAEAAAAGkAAC
4 ee AAAM1CAAEAAAAGkAAD
5 ii AAAM1CAAEAAAAGkAAE
6 rr AAAM1CAAEAAAAGkAAF 插入一行后,ROWID值变成如下:
7 pp AAAM1CAAEAAAAGnAAA 再插入2行后,ROWID值又变成如下了:
8 nn AAAM1CAAEAAAAGkAAG
0 qq AAAM1CAAEAAAAGkAAH 结果select后的排序为(其实0这一行,我是放在1前面插入的,为什么会跳到后面去?):
1 aa AAAM1CAAEAAAAGkAAA
2 bb AAAM1CAAEAAAAGkAAB
3 cc AAAM1CAAEAAAAGkAAC
4 ee AAAM1CAAEAAAAGkAAD
5 ii AAAM1CAAEAAAAGkAAE
6 rr AAAM1CAAEAAAAGkAAF
8 nn AAAM1CAAEAAAAGkAAG
0 qq AAAM1CAAEAAAAGkAAH
7 pp AAAM1CAAEAAAAGnAAA为什么地址会跳动?如果不安顺序,这种顺序很难看诶,SQLSERVER里面不是安顺序的么?
NUM NAME ROWID
1 aa AAAM1CAAEAAAAGkAAA
2 bb AAAM1CAAEAAAAGkAAB
3 cc AAAM1CAAEAAAAGkAAC
4 ee AAAM1CAAEAAAAGkAAD
5 ii AAAM1CAAEAAAAGkAAE
6 rr AAAM1CAAEAAAAGkAAF 插入一行后,ROWID值变成如下:
7 pp AAAM1CAAEAAAAGnAAA 再插入2行后,ROWID值又变成如下了:
8 nn AAAM1CAAEAAAAGkAAG
0 qq AAAM1CAAEAAAAGkAAH 结果select后的排序为(其实0这一行,我是放在1前面插入的,为什么会跳到后面去?):
1 aa AAAM1CAAEAAAAGkAAA
2 bb AAAM1CAAEAAAAGkAAB
3 cc AAAM1CAAEAAAAGkAAC
4 ee AAAM1CAAEAAAAGkAAD
5 ii AAAM1CAAEAAAAGkAAE
6 rr AAAM1CAAEAAAAGkAAF
8 nn AAAM1CAAEAAAAGkAAG
0 qq AAAM1CAAEAAAAGkAAH
7 pp AAAM1CAAEAAAAGnAAA为什么地址会跳动?如果不安顺序,这种顺序很难看诶,SQLSERVER里面不是安顺序的么?
解决方案 »
- select *和select count(*)数量不一致
- sql?急
- 有谁知道Oracle,DB2,SQL Server在代价评估模型上面的区别?
- 求教 oracle rac windows 2003 用户"administrator"等同用户检查失败 的错误
- 还是喜欢这个论坛,发一个求救帖,ORACLE的字符串替换帖子
- 关于 select :变量!
- 请问:oracle中的Net Manager工具,和Net Configuration Assistant有什么区别呢?
- 如何知道一个用户在当前一段时间内执行了哪些SQL语句?
- 查询执行过的sql
- 怎么写序号生成器(Number (8)),又怎么在SQL的Insert中调用?
- 创建表空间时,为什么后缀是.dbf文件?
- 求助!PD导入Oracle数据库失败!请帮忙
如果要排序,用order by比较保险
select dbms_rowid.ROWID_RELATIVE_FNO(rowid) rfile#,
dbms_rowid.ROWID_BLOCK_NUMBER(rowid) block#,
dbms_rowid.ROWID_ROW_NUMBER(rowid) row#,表.*
from 表;
rowid是物理地址,所以如果不是用append的方式插入的,很难保证后面的rowid一定大于前面的。
恩,结果如下:
RFILE# BLOCK# ROW# NUM NAME
4 420 0 1 aa
4 420 1 2 bb
4 420 2 3 cc
4 420 3 4 ee
4 420 4 5 ii
4 420 5 6 rr
4 420 6 8 nn
4 420 7 0 qq
4 420 8 9 mm
4 423 0 7 pp 为什么块号直接从420跳到423了?还有第9行的ROW怎么没有了?
哦,很有道理,不过IOT是指什么(是指排序吗)?
APPEND旁边的符号也要吗?我试试