`
liuxi1024
  • 浏览: 384962 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

oracle rownum总结

阅读更多

1、概念理解

      对于rownum来说它是oracle系统顺序分配为从查询返回的行的编号,返回的第一行分配的是1,第二行是2,依此类推,这个伪字段可以用于限制查询返回的总行数,而且rownum不能以任何表的名称作为前缀。

 

2、例子

(1)创建table grade

create table grade(
   id  NUMBER(16),
   name VARCHAR2(32),
   value NUMBER(19),
   primary key (id)
);

 (2)插入数据

------------------------------------
id         name           value
------------------------------------
101       语文             86
102       数学             89
103       英语             73
104       马哲             82
-----------------------------------

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

SQL>

select rownum,id,name,value from grade where rownum=1

 结果>

-----------------------------------------------
rownum      id         name           value
-----------------------------------------------
1               101       语文             86

 

SQL>

select rownum,id,name,value from grade where rownum=2

 结果>

-----------------------------------------------
rownum      id         name           value
-----------------------------------------------

 

总结原因:rownum是在得到结果集的时候产生的,用于标记结果集中结果顺序的一个字段,这个字段被称为“伪数列”,也就是事实上不存在的一个数列。它的特点是按顺序标记,而且是逐次递加的,换句话说就是只有有rownum=1的记录,才可能有rownum=2的记录。

 

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

SQl>

select rownum,id,name,value from grade where rownum>2

 结果>

-----------------------------------------------
rownum      id         name           value
-----------------------------------------------

原因同上!!!

>>那如何解决?

>>rownum不是个“伪数列”么,那我们现在把它弄成一个实在的字段就可以了。

>>具体做法就是利用子查询,在构建临时表的时候,把rownum也一起构造进去。

>>注意子查询中的rownum必须要有别名,否则还是不会查出记录来,这是因为rownum不是某个表的列,如果不起别名的话,无法知道rownum是子查询的列还是主查询的列。

SQL>

select * from (select rownum num,id,name,value from grade) where num>2;

 结果>

-----------------------------------------------
rownum      id         name           value
-----------------------------------------------
3               103          英语             73
4               104          马哲             82

 

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

SQL>

select rownum,id,name,value from grade where value>80 and rownum<3;

 结果>

-----------------------------------------------
rownum      id         name           value
-----------------------------------------------
1               101          语文             86
2               102          数学             89

>>rownum对于rownum<n((n>1的自然数)的条件认为是成立的,所以可以找到记录。

 

(6)rownum和排序

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

SQL>

select rownum,id,name,value from grade order by value

 结果>

-----------------------------------------------
rownum      id         name           value
-----------------------------------------------
3               103          英语             73
4               104          马哲             82
1               101          语文             86
2               102          数学             89

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

SQL>

select rownum ,id,name,value from (select * from grade order by value)

 结果>

-----------------------------------------------
rownum      id         name           value
-----------------------------------------------
1               101          语文             86
2               102          数学             89
3               103          英语             73
4               104          马哲             82

 

3、总结

略...

分享到:
评论

相关推荐

    ORACLE 中ROWNUM用法总结

    ORACLE 中ROWNUM用法总结 整理版本,详细明了

    oracle与SQL server的语法差异总结

    Oracle与SQL Server应用差异对比分析在Oracle中采用伪列rownum 获取结果集中排在前面的部分记录 Eg: 返回结果集中前10条记录 Select * from sysc01 where rownum Rownum可使用&lt;、符号,不可使用&gt;、&gt;=符号,如果使用...

    rowid与rownum区别

    ORACLE 中ROWNUM用法总结!数据库管理员及程序开发员必看。

    Oracle查询总结与优化

    procedure sp_Page(p_PageSize int, --每页记录数 p_PageNo int, --当前页码,从 1 开始 ... --注意对rownum别名的使用,第一次直接用rownum,第二次一定要用别名rn OPEN p_OutCursor FOR v_sql; end sp_Page;

    Oracle数据库学习指南

    40. 如何正确利用Rownum来限制查询所返回的行数 41. 什么是ROWID,为什么需要它 42. 手工安装数据库时需要安装那些系统包 43. 手工创建数据库的全部脚本及说明 44. 提高Oracle数据库应用系统安全的举例与分析 ...

    oracle学习及练习语句

    1.Oracle中的一些练习_ddl语句 2.最常用的联系表,企业员工表。以后Oracle联系表就使用这个表啦... 3.查询及删除重复记录的方法大全 4.ORACLE 中ROWNUM用法总结!

    Oracle使用疑难问题汇总

    教程名称:Oracle使用疑难问题汇总课程目录:【】Oracle DBA优化数据库性能心得体会【】ORACLE 中ROWNUM用法总结【】Oracle 查询表空间使用情况(经典篇)【】Oracle下巧用bulk collect实现cursor批量fetch【】...

    Oracle数据库、SQL

    17.7 Oracle的锁机制 36 17.8事务不提交的后果 36 17.9回滚事务rollback 36 17.10保留点savepoint 36 十八、 数据库对象:视图view 37 18.1带子查询的create table 37 18.2带子查询的insert 37 18.3定义缺省值:...

    个人开发中遇到常见问题及解决办法(吐血总结)

    11 解析oracle的rownum 12 ava web项目中开放一个webservice接口实例 13 js方式实现 系统时间显示 14 js 按Enter健实现搜索 15 多选框批量删除 16 js实现单选全选 17 数据库表数据被误删之后的恢复

    收获不止SQL优化

    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改写确保执行计划...

    Java学习笔记-个人整理的

    {1.3.1}总结}{23}{subsection.1.3.1} {1.4}数据类型}{23}{section.1.4} {1.4.1}整数与浮点数}{23}{subsection.1.4.1} {1.4.1.1}浮点数原理}{24}{subsubsection.1.4.1.1} {1.4.2}格式化输出浮点数}{24}{...

    springmybatis

    后来项目结束了,我也没写总结文档。已经过去好久了。但最近突然又对这个ORM 工具感兴趣。因为接下来自己的项目中很有可能采用这个ORM工具。所以在此重新温习了一下 mybatis, 因此就有了这个系列的 mybatis 教程. ...

Global site tag (gtag.js) - Google Analytics