oracle和sqlserver取第一条记录的区别以及rownum详解转 oracle rownum 1

我们知道学生可能有重名的情况,那么当重名的时候假设只需要取得重名结果集中的第一条记录。

sqlserver:
select top(1) num,Name from M_Student wherename = 'xy'

Oracle:
select num,Namefrom M_Student where name = 'xy' and rownum <= 1


对于rownum在oracle的使用的时候,有几点需要注意:

(1) rownum对于等于某值的查询条件

如果希望找到学生表中第一条学生的信息,可以使用rownum=1作为条件。但是想找到学生表中第二条学生的信息,使用rownum=2结果查不到数据。因为rownum都是从1开始,但是1以上的自然数在rownum做等于判断是时认为都是false条件,所以无法查到rownum= n(n>1的自然数)。


(2)rownum对于大于某值的查询条件

如果想找到从第二行记录以后的记录,当使用rownum>2是查不出记录的,原因是由于rownum是一个总是从1开始的伪列,Oracle认为rownum> n(n>1的自然数)这种条件依旧不成立,所以查不到记录。

(3)rownum对于小于某值的查询条件

rownum对于rownum1的自然数)的条件认为是成立的,所以可以找到记录。比如 rownum< 3


(4)rownum和排序

Oracle中的rownum的是在取数据的时候产生的序号,所以想对指定排序的数据去指定的rowmun行数据就必须注意了。

select rownum ,id,name fromstudent order by name;

ROWNUMIDNAME
3200003李三
2200002王二
1200001张一
4200004赵四

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

select rownum ,id,name from(select * from student order by name);

ROWNUMIDNAME
3200003李三
2200002王二
oracle和sqlserver取第一条记录的区别以及rownum详解(转) oracle rownum 1
1200001张一
4200004赵四

这样就成了按name排序,并且用rownum标出正确序号(由小到大)


看一个例子

把最先进入公司的5个人找出来

方法一 SELECT * FROM emp WHERE ROWNUM<= 5 ORDER BY hiredate;

方法二 SELECT * FROM(SELECT * FROMemp ORDER BY hiredate) WHERE ROWNUM <= 5;


把最先进入公司的6-10个人找出来

方法一
SELECT * FROM (SELECT * FROM emp ORDER BY hiredate)
WHERE ROWNUM <= 10
MINUS
SELECT * FROM (SELECT * FROM emp ORDER BY hiredate)
WHERE ROWNUM <= 5;

方法二(分页常用)
SELECT * FROM(SELECT e.*, ROWNUM rn FROM (SELECT * FROM emp) e WHERE ROWNUM<= 10) t WHERE t.rn >= 6;

SELECT * FROM (SELECT e.*, ROWNUMrn FROM (SELECT ename, sal FROM emp) e WHERE ROWNUM <= 10) WHERErn >= 6;


参考博客:

http://topic.csdn.net/t/20040329/17/2900155.html
http://apps.hi.baidu.com/share/detail/5881277

  

爱华网本文地址 » http://www.aihuau.com/a/25101010/38975.html

更多阅读

怎样区别香氛和香水 香氛与香水的区别

怎样区别香氛和香水——简介香氛和香水的区别主要在味道的种类、香味的浓淡、香味持续时间和使用场合的不同。怎样区别香氛和香水——方法/步骤怎样区别香氛和香水 1、 香氛只有一种味道,香水有三种味道 一般同一种香型的香水和香

12593和17951的区别图文详解 git使用教程图文详解

12593和17951的区别(图文详解)——简介在使用手机通信时经常会听到12593和17951,可能大家在使用的时候都知道在电话号码前加上17951或12593在通话时可以享受通话优惠,但是可能很大一部分人都不知道什么时候该使用17951,什么时候该使用125

超详细的oracle10g安装教程详解 精 oracle10g安装图解

超详细的oracle10g安装教程详解 精——简介 Oracle 10g是甲骨文公司在2007年年7月12日推出的最新数据库软件,Oracle 10g有400多项功能,经过了1500万个小时的测试,开发工作量达到了3.6万人/月。相对过往版本而言,Oracle 10g具有了与众不

ps教程:蒙版的类型及应用详解

蒙版在PS里的应用相当广泛,蒙版最大的特点就是可以反复修改,却不会影响到本身图层的任何构造。如果对蒙版调整的图像不满意,可以去掉蒙版原图像又会重现。真是非常神奇的工具。ps教程:蒙版的类型及应用详解——工具/原料photoshop5.0以

声明:《oracle和sqlserver取第一条记录的区别以及rownum详解转 oracle rownum 1》为网友酒燒吢頭分享!如侵犯到您的合法权益请联系我们删除