weblogic 配置中the jdbc driver is not on the classpath解决
2009-11-06 11:03
597 查看
oracle伪列ROWNUM的学习
1. ROWNUM是按照记录插入时的顺序排序的
2. ROWNUM并不实际存在,是对筛选后的结果集的一个排序,如果不存在结果集就不会有ROWNUM
3. ROWNUM不能用基表名作为前缀
4. 在使用ROWNUM进行查询时
4.1若使用大于号(>),则只能使用(>0),其他均不可以,用刚才的表做说明。
(a)查询rownum>0的数据
select rownum,xh,sex,birthday,classid,degree from stud
where rownum >0
![](https://oscdn.geek-share.com/Uploads/Images/Content/201908/21/731aebd1c781f6788af9be31c1baf50b.jpg)
和预期一样,显示了所有的记录
(b)查询rownum>1的数据
select rownum,xh,sex,birthday,classid,degree from stud
where rownum >1(>N,N>=1)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201908/21/d0a6006b39a1d1409c745bbc04c301a5.jpg)
为什么不显示ROWNUM=(2,3,4)的记录
说明:当select筛选出所要的结果集后,取出第一条ROWNUM=1,不符合ROWNUM>1,所以剔除,选取下面一条数据,ROWNUM仍然是1,还是不符合要求。以此类推,没有ROWNUM=1就没有ROWNUM=2,所以就不会筛选出ROWNUM>1的结果集。
(c)但是利用子查询就可以实现原来的想法
select * from (select rownum as rn,xh,sex,birthday,classid,degree from stud)
where rn>1
注意:此处需要使用别名
![](https://oscdn.geek-share.com/Uploads/Images/Content/201908/21/df59ebaa2a44a26534b3b6cb34854b33.jpg)
4.2若使用小于号(<),同一般情况
4.3若使用等于号(=),则只能使用等于1(=1),原因同4.1
5. 对于ROWNUM排序的实验说明
(a)执行四条插入语句,SQL如下:
insert into stud values('A001','Jack','男','','10','');
insert into stud values('A002','Tom','男','','30','');
insert into stud values('A003','Jhon','女','','20','');
insert into stud values('A004','Martin','男','','20','');
commit;
(b)再进行查看,SQL如下:
select rownum,xh,sex,birthday,classid,degree from stud;
结果如下:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201908/21/648c9733e11554018f6ff0471a8fcbea.jpg)
(c)查看后三条记录,SQL如下:
select rownum,xh,sex,birthday,classid,degree from stud
where xh in ('A002','A003','A004');
结果如下:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201908/21/425cdb3963816e58ff103e70cedc0be3.jpg)
ROWNUM是按照插入顺序得来的,但是上面第二次查询ROWNUM为什么不是2、3、4,或许有人会有这个疑问。由于ROWNUM并不是物理存在的,它是一个逻辑的顺序。当查询时,按条件得到’A002’、’A003’、’A004’三条记录,oracle对查询得到的三条记录按照插入时的次序进行排序分别为1、2、3。
6.利用ROWNUM取出第2-3行数据,有两种方法:
方法一:先取出前3条记录,再取出第一条数据,用minus做差集就得到了需要的结果集
SQL如下:
select rownum,xh,xm,sex,classid from stud
where rownum <=3
minus
select rownum,xh,xm,sex,classid from stud
where rownum =1;
结果如下:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201908/21/009b2414e76ae68d3f7f9d8ed7437ae8.jpg)
方法二:不利用minus也可以,利用子查询
SQL如下:
select * from (select rownum as rn,xh,xm,sex,classid from stud where rownum<=3)
where rn>1;
结果如下:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201908/21/1ad753d3a07078e036bf2d47634edcd9.jpg)
总结:方法二使用时,子查询rownum需要使用别名。在数据量较大的情况下,方法二效率较高。本文出自 “To_Be_Monster_Of_IT” 博客,请务必保留此出处http://nbmonster.blog.51cto.com/1977736/661014
1. ROWNUM是按照记录插入时的顺序排序的
2. ROWNUM并不实际存在,是对筛选后的结果集的一个排序,如果不存在结果集就不会有ROWNUM
3. ROWNUM不能用基表名作为前缀
4. 在使用ROWNUM进行查询时
4.1若使用大于号(>),则只能使用(>0),其他均不可以,用刚才的表做说明。
(a)查询rownum>0的数据
select rownum,xh,sex,birthday,classid,degree from stud
where rownum >0
![](https://oscdn.geek-share.com/Uploads/Images/Content/201908/21/731aebd1c781f6788af9be31c1baf50b.jpg)
和预期一样,显示了所有的记录
(b)查询rownum>1的数据
select rownum,xh,sex,birthday,classid,degree from stud
where rownum >1(>N,N>=1)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201908/21/d0a6006b39a1d1409c745bbc04c301a5.jpg)
为什么不显示ROWNUM=(2,3,4)的记录
说明:当select筛选出所要的结果集后,取出第一条ROWNUM=1,不符合ROWNUM>1,所以剔除,选取下面一条数据,ROWNUM仍然是1,还是不符合要求。以此类推,没有ROWNUM=1就没有ROWNUM=2,所以就不会筛选出ROWNUM>1的结果集。
(c)但是利用子查询就可以实现原来的想法
select * from (select rownum as rn,xh,sex,birthday,classid,degree from stud)
where rn>1
注意:此处需要使用别名
![](https://oscdn.geek-share.com/Uploads/Images/Content/201908/21/df59ebaa2a44a26534b3b6cb34854b33.jpg)
4.2若使用小于号(<),同一般情况
4.3若使用等于号(=),则只能使用等于1(=1),原因同4.1
5. 对于ROWNUM排序的实验说明
(a)执行四条插入语句,SQL如下:
insert into stud values('A001','Jack','男','','10','');
insert into stud values('A002','Tom','男','','30','');
insert into stud values('A003','Jhon','女','','20','');
insert into stud values('A004','Martin','男','','20','');
commit;
(b)再进行查看,SQL如下:
select rownum,xh,sex,birthday,classid,degree from stud;
结果如下:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201908/21/648c9733e11554018f6ff0471a8fcbea.jpg)
(c)查看后三条记录,SQL如下:
select rownum,xh,sex,birthday,classid,degree from stud
where xh in ('A002','A003','A004');
结果如下:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201908/21/425cdb3963816e58ff103e70cedc0be3.jpg)
ROWNUM是按照插入顺序得来的,但是上面第二次查询ROWNUM为什么不是2、3、4,或许有人会有这个疑问。由于ROWNUM并不是物理存在的,它是一个逻辑的顺序。当查询时,按条件得到’A002’、’A003’、’A004’三条记录,oracle对查询得到的三条记录按照插入时的次序进行排序分别为1、2、3。
6.利用ROWNUM取出第2-3行数据,有两种方法:
方法一:先取出前3条记录,再取出第一条数据,用minus做差集就得到了需要的结果集
SQL如下:
select rownum,xh,xm,sex,classid from stud
where rownum <=3
minus
select rownum,xh,xm,sex,classid from stud
where rownum =1;
结果如下:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201908/21/009b2414e76ae68d3f7f9d8ed7437ae8.jpg)
方法二:不利用minus也可以,利用子查询
SQL如下:
select * from (select rownum as rn,xh,xm,sex,classid from stud where rownum<=3)
where rn>1;
结果如下:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201908/21/1ad753d3a07078e036bf2d47634edcd9.jpg)
总结:方法二使用时,子查询rownum需要使用别名。在数据量较大的情况下,方法二效率较高。本文出自 “To_Be_Monster_Of_IT” 博客,请务必保留此出处http://nbmonster.blog.51cto.com/1977736/661014
相关文章推荐
- 解决com.sun.tools.javac.Main is not on the classpath的问题
- 解决LoggerFactory is not a Logback LoggerContext but Logback is on the classpath
- ant 解决com.sun.tools.javac.Main is not on the classpath的问题
- 解决com.sun.tools.javac.Main is not on the classpath的问题
- ant 解决com.sun.tools.javac.Main is not on the classpath的问题
- 解决com.sun.tools.javac.Main is not on the classpath / Unable to find a javac compiler 的问题
- ant报错: 解决com.sun.tools.javac.Main is not on the classpath的问题
- 解决com.sun.tools.javac.Main is not on the classpath的问题
- unable to find javac compiler;com.sun.tools.javac.Mainisnotontheclasspath的问题的解决
- 解决com.sun.tools.javac.Main is not on the classpath的问题
- com.sun.tools.javac.Main is not on the classpath.错误解决方法
- ant中com.sun.tools.javac.Main is not on the classpath问题的解决方案
- 解决maven工程中出现The project was not built since its build path is incomplete. Cannot find the class file
- Hive学习2_错误: The specified datastore driver ("com.mysql.jdbc.Driver") was not found in the CLASSPATH
- 安装springboot时遇到 LoggerFactory is not a Logback LoggerContext but Logback is on the classpath.问题
- servlet解析不出来解决方法(is not a known servlet. Servlets belong in the classpath, often in WEB-INF/classes)
- Tomcat配置: The archive: /bin/bootstrap.jar which is referenced by the classpath, does not exist.
- eclipse中设置.abc--xyz触发提示输入时,提示This compilation unit is not on the build path of java project 异常如何解决?
- 问题:Unable to find a javac compiler; com.sun.tools.javac.Main is not on the classpath.Perhaps JAVA_HOME does not point to the JDK
- 解决配置数据库时Could not load JDBC driver class问题