- 浏览: 780289 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (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 1614一道SQL语句面试题,关于group by 表内容: 2 ... -
面试SQL语句
2013-09-03 22:22 11401Get the average salary of e ... -
mysql语法与decode语法的不同
2012-12-07 11:06 1564这两天要把一个系统从oracle上移植到mysql上,顺便简单 ... -
数据库事务转载基础二:MySQL事务隔离级别详解
2012-06-19 13:01 905SQL标准定义了4类隔离级别,包括了一些具体规则,用来限定 ... -
数据库事务转载基础二:oracle事务隔离级别
2012-06-19 12:57 909Oracle 支持的 2 种事务隔离级别 Read commi ... -
数据库事务转载基础一:oarcle事务
2012-06-19 12:48 1062Oracle事务 2010-11-29 14:22 ... -
数据库实现列值合并为行
2011-10-21 14:17 1210转载自:http://hi.baidu.com/wangz ... -
oracle中使用sys_connect_by_path进行表中行值连接
2011-03-01 12:52 12037一、最原始的表说明 CREATE TABLE DATADIC ... -
oracle 10 TNSLSNR.EXE 占用了8080端口怎么办
2010-02-20 17:51 3949oracle 10服务一启动 TNSLSNR.exe 会占用8 ... -
解决ora-280000 the account is locked
2010-02-20 16:35 4320测试、运行程序时,一般使用服务器上的oracle服务,2010 ... -
oracle 中的几天后,几年后
2009-08-21 15:52 1798首先,需要记住Oracle里面的日期加减是按照天来计算的 ... -
ob 接oracle10时接不上怎么办?
2009-05-04 16:36 13021、打开BDE Administrator。 ... -
Union使用
2009-02-11 14:55 1144select subjectRecordNo as ... -
oracle中判断一个串中是否包含另一个串
2008-12-31 14:32 2792select decode(INSTR('CORPORATEa ... -
sum结果为null时,如果返回值是int型报错
2008-12-01 16:44 2022select nvl(sum(decode(sta ... -
oracle结构设计
2008-11-10 15:21 1279尽管Oracle系统本身已 ... -
Oracle的rownum原理和使用
2008-11-07 11:20 1287俺程序中用到的rownum分页+排序的实现(有机会仔细研究) ... -
oracle10数据库导入导出问题
2008-07-01 15:02 1747ob7.0 不支持oracle10的导入,只可以导出。 toa ... -
oracle中用START WITH...CONNECT BY PRIOR子句实现递归查询
2008-05-26 15:39 10237今天发现在oracle中的select语句可以用START W ... -
Oracle Discover产品简介
2008-03-03 10:50 4241Oracle Discoverer?是Oracle公司面向De ...
相关推荐
Oracle学习笔记(rownum和rowid),有具体的代码案例讲解rownum和rowid
在 Oracle 中,`ROWNUM` 是一个非常有用的特性,它可以在查询时为每一行生成一个唯一的序列号,这对于限制返回结果的数量或者进行分页查询非常有用。然而,MySQL 并不直接支持 `ROWNUM` 这一概念。但在实际应用中,...
40. 如何正确利用Rownum来限制查询所返回的行数 41. 什么是ROWID,为什么需要它 42. 手工安装数据库时需要安装那些系统包 43. 手工创建数据库的全部脚本及说明 44. 提高Oracle数据库应用系统安全的举例与分析 ...
### Oracle数据库学习知识点详解 #### 一、基本使用 ##### 1.1 常用命令 **1.1.1 Connect/Disconnect数据库连接命令** - **用途:** 连接或断开与Oracle数据库的连接。 - **语法示例:** - `sqlplus username/...
### Oracle数据库经典学习教程知识点概览 #### 一、走进Oracle ##### 1. Oracle简介 - **背景介绍**:Oracle是由甲骨文公司开发的一款关系型数据库管理系统,以其强大的功能和广泛的应用场景而闻名。它不仅适用于中...
### Oracle数据库学习知识点详解 #### 一、基本使用 ##### 1.1 常用命令 **1.1.1 Connect/Disconnect 数据库连接命令** - **Connect**: 使用 `connect` 命令可以连接到Oracle数据库。语法通常为 `connect ...
Oracle编程学习材料是一份专为初学者设计的资源集合,主要涵盖了SQL语言的基础与进阶内容。Oracle数据库系统是全球广泛使用的大型关系型数据库管理系统,而SQL(结构化查询语言)则是管理和操作Oracle数据库的核心...
本文将深入探讨在"Oracle学习及练习语句"主题中涉及的关键知识点,包括DDL语句、联系表设计、ROWNUM的使用以及如何查询和删除重复记录。 1. DDL(Data Definition Language)语句:在Oracle中,DDL用于创建、修改或...
在Oracle学习中,了解和掌握数据库的基础知识,如用户管理、SQL查询语言以及数据处理操作是至关重要的。 首先,Oracle数据库中有不同级别的用户,包括超级管理员、普通管理员和普通用户。超级管理员通常是sys,其...
SQL(Structured Query Language)是用于管理和操作数据库的标准语言,学习Oracle数据库和SQL语句是IT行业的基本技能之一。本“数据库Oracle自学通”文档旨在帮助初学者快速掌握Oracle的基础功能和SQL语法。 一、...
目前,很多人想通过ROWNUM取得第N条数据,可以没有办法实现。现在本人有这么一条语句,供大家学习学习。通过ROWNUM取得第二条数据
在Oracle数据库管理中,理解和掌握如何修改约束以及使用ROWNUM是非常重要的技能。本篇将深入探讨这两个核心概念,并通过MLDN魔乐科技的Oracle课堂19视频课程进行详细讲解。 首先,我们来讨论"修改约束"。在Oracle中...
在Oracle中实现分页查询,可以结合ROWNUM伪列,如上述示例所示,先创建一个带有ROWNUM的新表,然后根据ROWNUM进行筛选,实现数据分页。 这些只是Oracle 11g R2学习笔记中的部分内容,实际学习和使用中还会涉及更多...
【标签】"MLDN魔乐科技JAVA培训_Oracle课堂19_修改约束、ROWNUM.rar"标签再次确认了课程的主题,强调了学习者将深入理解Java开发背景下的Oracle数据库管理和查询优化技巧。 【压缩包子文件的文件名称】"MLDN魔乐...
### Oracle 数据库学习指南 #### 一、通过索引提高查询效率 在Oracle数据库中,索引是一种重要的数据结构,用于提高数据检索的性能。它类似于书籍中的索引,可以帮助快速定位到特定的数据行。 ##### 创建表与批量...
### Oracle数据库中常用的数据类型 在Oracle数据库中,数据类型的选择对于存储效率和查询性能至关...通过以上内容的学习,可以对Oracle数据库有一个全面而深入的理解,为高效地管理和利用数据库资源打下坚实的基础。
Oracle高级SQL学习与练习涵盖了数据库编程中的一系列高级主题,旨在帮助数据库开发者和管理员提高解决复杂问题的能力。在Oracle数据库系统中,高级SQL技能是进行高效数据管理、查询优化和复杂数据处理的基础。 1. ...
学习者还应了解排序(ORDER BY)、分页(LIMIT或ROWNUM)等查询技巧。 三、Oracle函数 Oracle提供了丰富的内置函数,包括字符串函数(如SUBSTR、CONCAT)、日期时间函数(如SYSDATE、ADD_MONTHS)、数学函数(如...