我想了解rowID
和rowNUM
如何在我们的表格中看到这两个。
执行此操作时:
SELECT * FROM emp WHERE rownum=1
它返回一个查询,但是当我对rowid执行相同操作时,它会显示
不一致的数据类型:预期ROWID获得NUMBER
即使在某些表中,rownum也会返回null。为什么这样?
请澄清一下:rowid vs rownum?(演示查询)
谢谢
编辑:需要使用别名来显示ROWID
和ROWNUM
(因为它们是伪列)
像:
SELECT rownum r1, rowid r2 FROM emp
答案 0 :(得分:14)
rownum和rowed都是伪列。
<强> ROWID 强>
对于数据库中的每一行,ROWID伪列返回 行的地址。
示例查询将是:
SELECT ROWID, last_name
FROM employees
WHERE department_id = 20;
有关rowid的更多信息:https://docs.oracle.com/cd/B19306_01/server.102/b14200/pseudocolumns008.htm
<强> ROWNUM 强>
对于查询返回的每一行,ROWNUM伪列返回a 表示Oracle从a中选择行的顺序的数字 表或一组连接的行。选中的第一行的ROWNUM为1, 第二个有2个,依此类推。
您可以使用rownum限制结果数量,如下所示:
SELECT * FROM employees WHERE ROWNUM < 10;
有关rownum的更多信息:https://docs.oracle.com/cd/B19306_01/server.102/b14200/pseudocolumns009.htm
<强>差分强>
rowid
和rownum
之间的实际差异在于,rowid是该行的永久唯一标识符。然而,rownum是暂时的。如果更改查询,则rownum编号将引用另一行,而rowid则不会。
因此ROWNUM是一个连续的数字,仅适用于特定的SQL语句。相反,ROWID是一行的唯一ID。
答案 1 :(得分:1)
Rownum(数字) =生成的输出序列号 Rowid(十六进制) =在插入行时自动生成。
SELECT rowid,rownum fROM EMP
ROWID ROWNUM
----- ----------------------
AAAR4AAAFAAGzg7AAA, 1
AAAR4AAAFAAGzg7AAB, 2
AAAR4AAAFAAGzg7AAC, 3
AAAR4AAAFAAGzg7AAD, 4
AAAR4AAAFAAGzg7AAE, 5
答案 2 :(得分:0)
答案 3 :(得分:-1)
行ID显示行的唯一identification
rownum
显示唯一的默认数字系列。
select * from emp
where rownum<=5; (it will execute correctly and gives output first 5 rows in your table )
select * from emp
where rowid<=5; (wrong because rowid helpful to identify the unique value)