rownum 原理如下:
1. 执行查询操作
2. 将第一行的 row num 置为 1
3. 将得到的行的 row num 与条件相比较, 如果不匹配, 则抛弃行, 如果匹配, 则返回行
4.oracle 获取下一行, 然后将 rownum 增 1
5. 返回第 3 步
从这个原理可以知道, select rownum,name from emp where rownum > 5; 不返回行
如何理解呢?
rownum 是一个序列, 是 oracle 数据库从数据文件或缓冲区中读取数据的顺序.
它取得第一条记录则 rownum 值为 1, 第二条为 2, 依次类推.
因为你用 > 时, 因为从缓冲区中得到的第一条记录的 rownum 为 1, 不符合 > 5 的条件, 所以被删除, 接着取下条,
可是它的 rownum 还是 1, 又被删除, 依次类推, 便没有了数据.
Oracle 中 rownum 原理介绍
来源: http://www.bubuko.com/infodetail-2477894.html