我想知道rowID和rowNUM的区别
以及如何在我们的桌子上看到这两个。
当我执行此操作时:
SELECT * FROM emp WHERE rownum=1它返回一个查询,但是当我对rowid做同样的操作时,它会说
不一致数据类型:预期ROWID获得编号
即使在某些表中,rownum也返回null。为什么会这样呢?
请澄清这一点: rowid vs rownum?(演示查询)
谢谢
编辑:要求使用别名来显示ROWID和ROWNUM(因为它们是伪alias ),如:
SELECT rownum r1, rowid r2 FROM emp
发布于 2015-12-15 06:43:46
ROWNUM和ROWID都是伪列。
Rowid
对于数据库中的每一行,ROWID伪列返回该行的地址。
一个示例查询将是:
SELECT ROWID, last_name
FROM employees
WHERE department_id = 20;关于rowid的更多信息,在这里:01/server.102/b14200/pseudocolumns008.htm
Rownum
对于查询返回的每一行,ROWNUM伪列返回一个数字,指示Oracle从表或连接行集中选择行的顺序。选中的第一行ROWNUM为1,第二行为2,依此类推。
您可以使用这样的行限制结果的数量:
SELECT * FROM employees WHERE ROWNUM < 10;关于rownum的更多信息,在这里:01/server.102/b14200/pseudocolumns009.htm
差分
rowid和rownum之间的实际区别在于,rowid是该行的永久唯一标识符。然而,行是暂时的。如果更改查询,行号将引用另一行,rowid则不会。
因此,ROWNUM是一个连续的数字,仅适用于特定的SQL语句。相反,ROWID是行的唯一ID。
发布于 2015-12-15 08:49:18
Rownum (数值)=生成的输出序列号。
Rowid (十六进制)=在插入行时自动生成。
SELECT rowid,rownum fROM EMP
ROWID ROWNUM
----- ----------------------
AAAR4AAAFAAGzg7AAA, 1
AAAR4AAAFAAGzg7AAB, 2
AAAR4AAAFAAGzg7AAC, 3
AAAR4AAAFAAGzg7AAD, 4
AAAR4AAAFAAGzg7AAE, 5 发布于 2019-06-08 06:00:24
https://stackoverflow.com/questions/34282583
复制相似问题