- 浏览: 767503 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (256)
- ssh (18)
- webservice (8)
- java基础 (38)
- j2EE方方面面 (17)
- 随意涂鸭!呵呵 (2)
- 数据库 (22)
- work (10)
- XML与XML解析 (9)
- 测试 (2)
- sso (1)
- ldap (6)
- java 模板技术 (4)
- 版本管理 (1)
- 每日小点滴 (26)
- javascript (26)
- Jakarta Commons (2)
- css (6)
- 设计 (3)
- Eclipse插件开发 (3)
- BAP (3)
- web控件 (2)
- java加密解密 (4)
- 调优 (6)
- 界面技术 (3)
- java多线程 (6)
- 互联网 (2)
- 日志管理 (4)
- java调度 (3)
- rest (0)
- Python (2)
- mobile (2)
- 2016的故事 (4)
- Docker (1)
- NOSQL_Hadoop (0)
最新评论
-
promiseloney:
这个女程序员厉害了。。。
JVM调优:GC 参数 -
zxjlwt:
可以通过WebService上传一个文件吗?素人派http:/ ...
webservice传送XML大小估算 -
liaoshaoyang:
写的不错嘛 可以做参考
权限管理设计一 -
aaaaaaaaabaas:
谢谢,对我有帮助
Apache Commons Configuration使用入门 -
Jack_Wilshere:
com.smartdot.pdm.business.corp. ...
java导出txt
----oracle排序写法 SELECT * FROM ( SELECT list.*, rownum as RNUM FROM ( SELECT * FROM CIP_Test_User ORDER BY ID desc ) list WHERE ROWNUM < 11 ) WHERE RNUM >=1
1、为什么不直接用 SELECT a.*,rownum FROM CIP_Test_User a ORDER BY ID desc进行排序?
因为rownum计算比ORDER BY ID desc 更有优先级,rownum的值不会按照排序后的记录顺序重新计算,所
以如果这样做要取排序后的记录肯定是有错误的。
2、为什么要先取 ROWNUM < 5,再循环一次取ROWNUM >1?用下面的语句行不行?
SELECT list.*, rownum as RNUM FROM (
SELECT a.*,rownum FROM CIP_Test_User a ORDER BY ID desc)
list WHERE ROWNUM < 5 and ROWNUM >1
验证结果:取出的记录为0行。
因为1:当用rownum做为条件时,只能用小于、小于等于、等于(只能等于1),而用大于、大于等于是没有结果的。
因为oracle计算时,当出现一个 rownum 不满足条件的时候则 查询结束 this is stop key!
rownum是oracle系统顺序分配为从查询返回的行的编号,返回的第一行分配的是1,第二行是2,依此类推,
这个伪字段可以用于限制查询返回的总行数,而且rownum不能以任何表的名称作为前缀。
(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的自然数)这种条件依旧不成立,所以查不到记录
SQL> select rownum,id,name from student where rownum >2;
ROWNUM ID NAME
---------- ------ ---------------------------------------------------
那如何才能找到第二行以后的记录呀。可以使用以下的子查询方法来解决。注意子查询中的rownum必须
要有别名,否则还是不会查出记录来,这是因为rownum不是某个表的列,如果不起别名的话,无法知道
rownum是子查询的列还是主查询的列
SQL>select * from(select rownum no ,id,name from student) where no>2;
NO ID NAME
---------- ------ ---------------------------------------------------
3 200003 李三
4 200004 赵四
SQL> select * from(select rownum,id,name from student)where rownum>2;
ROWNUM ID NAME
---------- ------ ---------------------------------------------------
(3)rownum对于小于某值的查询条件
如果想找到第三条记录以前的记录,当使用rownum<3是能得到两条记录的。显然rownum对于rownum<n
((n>1的自然数)的条件认为是成立的,所以可以找到记录。
SQL> select rownum,id,name from student where rownum <3;
ROWNUM ID NAME
---------- ------ ---------------------------------------------------
1 200001 张一
2 200002 王二
综上几种情况,可能有时候需要查询rownum在某区间的数据,那怎么办呀从上可以看出rownum对小于某值的查询条件是人为true 的,rownum对于大于某值的查询条件直接认为是false的,但是可以间接的让它转为认为是true的。那就必须使用子查询。例如要查询rownum 在第二行到第三行之间的数据,包括第二行和第三行数据,那么我们只能写以下语句,先让它返回小于等于三的记录行,然后在主查询中判断新的rownum的别名列大于等于二的记录行。但是这样的操作会在大数据集中影响速度。
SQL> select * from (select rownum no,id,name from student where rownum<=3 ) where no >=2;
NO ID NAME
---------- ------ ---------------------------------------------------
2 200002 王二
3 200003 李三
(4)rownum和排序
“select * from tabname where rownum<20 order by name" 但却发现oracle却不能按自己的意愿来执行,而是先随便取20条记录,然后再 order by,后经咨询oracle,说rownum确实就这样,想用的话,只能用子查询 来实现先排序,后rownum,方法如下:
"select * from (select * from tabname order by name) where rownum<20",但这样一来,效率会较低很多。
但是,在order by 的字段上加主键或索引即可让oracle先按 该字段排序,然后再rownum;方法不变:
“select * from tabname where rownum<20 order by name"
参考网址:http://www.examda.com/oracle/zhonghe/20091209/100421867.html
发表评论
-
SQL面试题二
2013-09-03 22:39 1561一道SQL语句面试题,关于group by 表内容: 2 ... -
面试SQL语句
2013-09-03 22:22 10661Get the average salary of e ... -
mysql语法与decode语法的不同
2012-12-07 11:06 1525这两天要把一个系统从oracle上移植到mysql上,顺便简单 ... -
数据库事务转载基础二:MySQL事务隔离级别详解
2012-06-19 13:01 864SQL标准定义了4类隔离级别,包括了一些具体规则,用来限定 ... -
数据库事务转载基础二:oracle事务隔离级别
2012-06-19 12:57 872Oracle 支持的 2 种事务隔离级别 Read commi ... -
数据库事务转载基础一:oarcle事务
2012-06-19 12:48 1009Oracle事务 2010-11-29 14:22 ... -
数据库实现列值合并为行
2011-10-21 14:17 1167转载自:http://hi.baidu.com/wangz ... -
oracle中使用sys_connect_by_path进行表中行值连接
2011-03-01 12:52 11938一、最原始的表说明 CREATE TABLE DATADIC ... -
oracle 10 TNSLSNR.EXE 占用了8080端口怎么办
2010-02-20 17:51 3898oracle 10服务一启动 TNSLSNR.exe 会占用8 ... -
解决ora-280000 the account is locked
2010-02-20 16:35 4257测试、运行程序时,一般使用服务器上的oracle服务,2010 ... -
oracle 中的几天后,几年后
2009-08-21 15:52 1754首先,需要记住Oracle里面的日期加减是按照天来计算的 ... -
ob 接oracle10时接不上怎么办?
2009-05-04 16:36 12591、打开BDE Administrator。 ... -
Union使用
2009-02-11 14:55 1100select subjectRecordNo as ... -
oracle中判断一个串中是否包含另一个串
2008-12-31 14:32 2701select decode(INSTR('CORPORATEa ... -
sum结果为null时,如果返回值是int型报错
2008-12-01 16:44 1962select nvl(sum(decode(sta ... -
oracle结构设计
2008-11-10 15:21 1250尽管Oracle系统本身已 ... -
Oracle的rownum原理和使用
2008-11-07 11:20 1230俺程序中用到的rownum分页+排序的实现(有机会仔细研究) ... -
oracle10数据库导入导出问题
2008-07-01 15:02 1709ob7.0 不支持oracle10的导入,只可以导出。 toa ... -
oracle中用START WITH...CONNECT BY PRIOR子句实现递归查询
2008-05-26 15:39 10174今天发现在oracle中的select语句可以用START W ... -
Oracle Discover产品简介
2008-03-03 10:50 4206Oracle Discoverer?是Oracle公司面向De ...
相关推荐
Oracle学习笔记(rownum和rowid),有具体的代码案例讲解rownum和rowid
在本篇文章里小编给大家分享的是关于mysql类似oracle rownum写法以及相关实例内容,需要的朋友们可以学习下。
主要介绍了ORACLE数据库中ROWNUM用法详解,对于rownum来说它是oracle系统顺序分配为从查询返回的行的编号,且rownum不能以任何表的名称作为前缀,需要的朋友们下面随着小编来一起学习学习吧
40. 如何正确利用Rownum来限制查询所返回的行数 41. 什么是ROWID,为什么需要它 42. 手工安装数据库时需要安装那些系统包 43. 手工创建数据库的全部脚本及说明 44. 提高Oracle数据库应用系统安全的举例与分析 ...
目前,很多人想通过ROWNUM取得第N条数据,可以没有办法实现。现在本人有这么一条语句,供大家学习学习。通过ROWNUM取得第二条数据
1.Oracle中的一些练习_ddl语句 2.最常用的联系表,企业员工表。以后Oracle联系表就使用这个表啦... 3.查询及删除重复记录的方法大全 4.ORACLE 中ROWNUM用法总结!
8、ROWNUM-TOP-N分析 9、相关子查询和非相关子查询 10、增强GROUP BY 11、分析函数(ANALYTICAL FUNCTIONS) 12、ROWID的使用 13、ORACLE 10G正则表达式 14、使用HINT 15、PARITION分区 16、并行操作 17、扩展DDL和...
oracle学习文档 笔记 全面 深刻 详细 通俗易懂 doc word格式 清晰 第一章 Oracle入门 一、 数据库概述 数据库(Database)是按照数据结构来组织、存储和管理数据的仓库,它产生于距今五十年前。简单来说是本身可视...
这是我自己学习oracle的时候,写的代码案例和笔记(rownum和rowid、嵌套表、可变数组、闪回、事务、索引、备份和恢复、用户创建和权限授予、序列和同义词、设计范式等等知识点),大家可以作为参考!
一、多行函数又称组合函数(Group ...但可以使用having avg(列1)>1000 having所起的作用和where一样 二、子查询Subqueries 查询前10行数据 oracle: select * from 表名 where rownum<=10; sql: select top 10
export ORACLE_HOME=/oracledata/.../bin: 一、注意事项: 大小写不敏感,即不区分大小写。提倡关键字大写,便于阅读和调式。 “!”在SQL环境下执行Unix命令。 SQL语句是由简单的英语单词构成;这些英语单词...
{12.13.3}rownum}{175}{subsection.12.13.3} {12.13.4}update}{176}{subsection.12.13.4} {12.13.5}delete}{177}{subsection.12.13.5} {12.13.6}drop}{177}{subsection.12.13.6} {12.13.7}rename}{177}{...
这部分很基础,但是如果搞不清楚,对以后的学习会有影响。 SQL> select * from v$version where rownum=1; BANNER ——————————————————————————– Oracle Database 11g ...
12.1.2 Rownum分页改写 337 12.1.3 Hint直接路径改造 338 12.1.4 只取你所需的列 339 12.1.5 避免或者减少递归调用 341 12.1.6 ROWID优化应用 347 12.2 设法避免外因影响 350 12.2.1 Hint改写确保执行计划...