我有一张叫做积分的桌子.我执行了以下查询,并期望一个列表的词典排序列表的ROWID,但没有发生.order by rowid如何对行进行排序?
select rowid from points order by rowid
Run Code Online (Sandbox Code Playgroud)
我有像下面这样的行
第二行的词典比第一行小.那么,如果不是lecxicographical排序,那么排序标准是什么?
为什么您看到的只是用于显示目的的表示.
实际的rowid包含有关数据块的二进制信息,块中的行,块所在的文件以及表的内部对象id(有关详细信息,请参阅手册)
当您使用order by rowidOracle时,根据该(内部)信息对行进行排序,而不是基于"字符串表示".
如果您将查询更改为:
select rowid,
dbms_rowid.rowid_relative_fno(rowid) as rel_fno,
dbms_rowid.rowid_row_number(rowid) as row_num,
dbms_rowid.rowid_block_number(rowid) as block_num,
dbms_rowid.rowid_object(rowid)
from points
order by rowid
Run Code Online (Sandbox Code Playgroud)
你很可能会看到rownumber排序背后的逻辑.
请注意,值dbms_rowid.rowid_object()始终相同.如果你的表中只有两行,那么两者最有可能也有相同的值rowid_block_number()