Oracle中的伪列 rowid,rownum及分页 详解
warning:
这篇文章距离上次修改已过434天,其中的内容可能已经有所变动。
在Oracle数据库中,ROWID是一个伪列,它可以唯一地标识表中的每一行。ROWID通常是一个指向数据块地址的指针,可以快速地定位到数据行的物理位置。
ROWID的值在行插入到表中时生成,一般不会改变,除非行被删除或移动。因此,可以使用ROWID来快速确定表中行的位置。
使用ROWID的例子:
SELECT ROWID, t.*
FROM your_table t
WHERE ROWID = 'AAAMN+AnAAAABuunAAA';ROWNUM是一个伪列,它返回结果集中行的序号。需要注意的是,ROWNUM是在结果集形成之后才赋值的,所以不能在WHERE子句中使用ROWNUM来过滤大于1的行号。
使用ROWNUM的例子:
SELECT ROWNUM, t.*
FROM your_table t
WHERE ROWNUM = 1;Oracle数据库中没有直接支持LIMIT语句进行分页,但是可以使用ROWNUM来实现类似的功能。
分页的例子:
SELECT *
FROM (
SELECT t.*, ROWNUM rnum
FROM your_table t
WHERE ROWNUM <= 20
)
WHERE rnum > 10;上述SQL语句中,内部查询首先获取前20行,然后外层查询获取第11行到第20行。这样就实现了分页功能。
评论已关闭