ini*_*tyk 11 sql oracle10g rowid rownum
我想知道rowID和之间的区别rowNUM
以及如何在我们的表中看到这两个.
当我执行这个:
SELECT * FROM emp WHERE rownum=1
Run Code Online (Sandbox Code Playgroud)
它返回一个查询,但是当我对rowid执行相同操作时,它说
不一致的数据类型:预期ROWID获得NUMBER
甚至在某些表中,rownum返回null.为什么这样?
请澄清一下:rowid vs rownum?(演示查询)
谢谢
编辑:需要使用别名来显示ROWID和ROWNUM(因为它们是伪列),如:
SELECT rownum r1, rowid r2 FROM emp
blc*_*ird 15
rownum和rowed都是伪列.
ROWID
对于数据库中的每一行,ROWID伪列返回行的地址.
一个示例查询将是:
SELECT ROWID, last_name
FROM employees
WHERE department_id = 20;
Run Code Online (Sandbox Code Playgroud)
有关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;
Run Code Online (Sandbox Code Playgroud)
关于rownum的更多信息:https://docs.oracle.com/cd/B19306_01/server.102/b14200/pseudocolumns009.htm
区别
rowid和之间的实际差异rownum是,rowid是该行的永久唯一标识符.然而,rownum是暂时的.如果更改查询,则rownum编号将引用另一行,而rowid则不会.
因此ROWNUM是一个连续的数字,仅适用于特定的SQL语句.相反,ROWID是一行的唯一ID.
| 归档时间: |
|
| 查看次数: |
71402 次 |
| 最近记录: |