rownum between连用为什么得不到数据呢?

来源:互联网 发布:java sleep函数 编辑:程序博客网 时间:2024/06/05 17:27

rownum在使用select查询的时候,自动生成的一串顺序号。在每返回一条数据结果的时候,rownum就自动加一。简单的说,是对结果集加的一个伪列,是oracle数据库从数据文件或缓冲区中读取数据的顺序。用>,>=,=,between...and这几个条件结果是没有数据的,因为你从缓冲区或数据文件中查询得到的第一条记录的rownum为1,则会被删除的,接着读取下一条数据,可是它的rownum又变成了1,结果又被删除掉了,所以查询的结果是没有数据。




select * from (    select mysal.*, rownum rn from (        select e.ename, e.sal, e.deptno from emp e join dept d on e.deptno=d.deptno        where e.deptno != 30 order by sal desc) mysal            where rownum <= 5)                where rn >= 3;