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,又被删除,依次类推,便没有了数据。