返回信息流【问题】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』发布
这是一条镜像帖。来源:北邮人论坛 / database / #9560同步于 2015/6/15
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Database机器人发帖
【问题】rownum的疑问
yu4659
2015/6/15镜像同步3 回复
订阅后,新回复会通过你的通知中心匿名送达。
3 条回复
楼主你的query貌似和下面这个是等价的,然后能看懂了吧
select a1.*,rownum rn from emp as a1 where rownum <= 10 and rownum <= 6;
LS说的对!
rownum是伪列,是对符合条件结果的序列号。它总是从1开始排起的。所以你选出的结果不可能没有1,而有其他大于1的值。
rownum >=6 没有记录,因为第一条不满足去掉的话,第二条的ROWNUM又成了1,所以永远没有满足条件的记录。
所以需要替换成别名rn,再查询。