首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >什么是rowID & rowNum (ROWID对ROWNUM)

什么是rowID & rowNum (ROWID对ROWNUM)
EN

Stack Overflow用户
提问于 2015-12-15 06:39:46
回答 4查看 112.7K关注 0票数 14

我想知道rowIDrowNUM的区别

以及如何在我们的桌子上看到这两个。

当我执行此操作时:

代码语言:javascript
复制
SELECT * FROM emp WHERE rownum=1

它返回一个查询,但是当我对rowid做同样的操作时,它会说

不一致数据类型:预期ROWID获得编号

即使在某些表中,rownum也返回null。为什么会这样呢?

请澄清这一点: rowid vs rownum?(演示查询)

谢谢

编辑:要求使用别名来显示ROWIDROWNUM(因为它们是伪alias ),如:

SELECT rownum r1, rowid r2 FROM emp

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2015-12-15 06:43:46

ROWNUM和ROWID都是伪列。

Rowid

对于数据库中的每一行,ROWID伪列返回该行的地址。

一个示例查询将是:

代码语言:javascript
复制
SELECT ROWID, last_name  
   FROM employees
   WHERE department_id = 20;

关于rowid的更多信息,在这里:01/server.102/b14200/pseudocolumns008.htm

Rownum

对于查询返回的每一行,ROWNUM伪列返回一个数字,指示Oracle从表或连接行集中选择行的顺序。选中的第一行ROWNUM为1,第二行为2,依此类推。

您可以使用这样的行限制结果的数量:

代码语言:javascript
复制
SELECT * FROM employees WHERE ROWNUM < 10;

关于rownum的更多信息,在这里:01/server.102/b14200/pseudocolumns009.htm

差分

rowidrownum之间的实际区别在于,rowid是该行的永久唯一标识符。然而,行是暂时的。如果更改查询,行号将引用另一行,rowid则不会。

因此,ROWNUM是一个连续的数字,仅适用于特定的SQL语句。相反,ROWID是行的唯一ID。

票数 20
EN

Stack Overflow用户

发布于 2015-12-15 08:49:18

Rownum (数值)=生成的输出序列号。

Rowid (十六进制)=在插入行时自动生成。

代码语言:javascript
复制
SELECT rowid,rownum fROM EMP


ROWID ROWNUM                 
----- ---------------------- 
AAAR4AAAFAAGzg7AAA, 1                      
AAAR4AAAFAAGzg7AAB, 2                      
AAAR4AAAFAAGzg7AAC, 3                      
AAAR4AAAFAAGzg7AAD, 4                      
AAAR4AAAFAAGzg7AAE, 5      
票数 4
EN

Stack Overflow用户

发布于 2019-06-08 06:00:24

  1. Rowid给出了行或记录的地址。Rownum给出了一个记录的计数
  2. Rowid永久存储在数据库中。Rownum不会永久存储在数据库中。
  3. 每个插入到表中的Rowid都会被自动分配。Rownum是一个动态值,它与select语句输出一起自动检索。
  4. 这只是为了展示的目的。
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34282583

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档