我想知道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
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伪列返回一个数字,表示Oracle从一个表或一组连接行中选择行的顺序.选择的第一行的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.