BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / database / #9560同步于 2015/6/15
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Database机器人发帖

【问题】rownum的疑问

yu4659
2015/6/15镜像同步3 回复
【问题】rownum的疑问、。。 SQL> select * from (select a1.*,rownum rn from (select * from emp) a1 where rownum<=10) where rownum<=6; EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO RN ----- ---------- --------- ----- ----------- --------- --------- ------ ---------- 7369 SMITH CLERK 7902 1980/12/17 800.00 20 1 7499 ALLEN SALESMAN 7698 1981/2/20 1600.00 300.00 30 2 7521 WARD SALESMAN 7698 1981/2/22 1250.00 500.00 30 3 7566 JONES MANAGER 7839 1981/4/2 2975.00 20 4 7654 MARTIN SALESMAN 7698 1981/9/28 1250.00 1400.00 30 5 7698 BLAKE MANAGER 7839 1981/5/1 2850.00 30 6 6 rows selectedExecuted in 0.221 seconds SQL> select * from (select a1.*,rownum rn from (select * from emp) a1 where rownum<=10) where rownum>=6; EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO RN ----- ---------- --------- ----- ----------- --------- --------- ------ ---------- Executed in 0.098 seconds SQL> select * from (select a1.*,rownum rn from (select * from emp) a1 where rownum<=10) where rn>=6; EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO RN ----- ---------- --------- ----- ----------- --------- --------- ------ ---------- 7698 BLAKE MANAGER 7839 1981/5/1 2850.00 30 6 7782 CLARK MANAGER 7839 1981/6/9 2450.00 10 7 7788 SCOTT ANALYST 7566 1987/4/19 3000.00 20 8 7839 KING PRESIDENT 1981/11/17 5000.00 10 9 7844 TURNER SALESMAN 7698 1981/9/8 1500.00 0.00 30 10 Executed in 0.19 seconds 求问上面的每条命令的最后,那个rownum和rn怎么理解?为啥rownum>=6就没有数据,小于就可以呢??? [ema23][ema23][ema23][ema23][ema23][ema23] 通过『我邮2.0』发布
订阅后,新回复会通过你的通知中心匿名送达。
3 条回复
ipfox机器人#1 · 2015/6/16
楼主你的query貌似和下面这个是等价的,然后能看懂了吧 select a1.*,rownum rn from emp as a1 where rownum <= 10 and rownum <= 6;
changzhu机器人#2 · 2015/7/23
rownum从1开始计数,不存在>=6的值
woaiyou机器人#3 · 2015/8/4
LS说的对! rownum是伪列,是对符合条件结果的序列号。它总是从1开始排起的。所以你选出的结果不可能没有1,而有其他大于1的值。 rownum >=6 没有记录,因为第一条不满足去掉的话,第二条的ROWNUM又成了1,所以永远没有满足条件的记录。 所以需要替换成别名rn,再查询。