您的位置:首页 > 其它

一个更加明显的rownum的例子

2013-09-26 15:19 204 查看
在oracle自动生成的表中操作

找出king所在部门工作年限最大的员工。。

本来查出来的入职最早的那个恰好排在最前面第一行,rownum是一



但是我修改了一些值,排序后,结果入职最早的

还是排在第一行,但是rownum不再是1



可以看出,rownum并不是按照hiredate的先后列来生成的序号。

如果按照下面语句查询,找出来的并不是最先入职的

select * from
(select rownum r,emp.* from emp where deptno =(select deptno from emp where ename ='KING')
order by hiredate) a where a.r=1;




解决办法

可以看出,rownum并不是按照hiredate列来生成的序号。系统是按照记录插入时的顺序给记录排的号,rowid也是顺序分配的。为了解决这个问题,必须使用子查询

select rownum r2,  a.* from
(select rownum r,emp.* from emp where deptno =(select deptno from emp where ename ='KING')
order by hiredate)   a ;


有的列可以不要,为了便于说明问题,列出2个rownum



加上where rownum=1后就是king的值

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: