`
liuxi1024
  • 浏览: 391041 次
  • 性别: 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`是一个非常有用的伪列,用于限制查询结果的行数,尤其是在处理大数据量或进行分页查询时。然而,`ROWNUM`的使用并不直观,尤其是当涉及到比较运算符(如`&gt;`, `&gt;=`, `=`等)时,容易引发...

    oracle rownum 的使用 和sqlserver有区别的!

    ### Oracle ROWNUM 使用详解与 SQL Server 区别 在数据库操作中,ROWNUM 是一个非常重要的伪列,主要用于返回查询结果的行序号。它在 Oracle 数据库中有着广泛的应用场景,尤其是在需要对查询结果进行分页显示、...

    oracle中取中间记录的方法

    本文将详细介绍如何利用Oracle中的`MINUS`操作符以及`ROWNUM`伪列来实现这一功能。 #### ROWNUM伪列简介 在介绍具体方法之前,我们首先了解一下`ROWNUM`伪列的基本概念。`ROWNUM`是Oracle提供的一种特殊的伪列,它...

    oracle中rownum的用法

    ### Oracle中的ROWNUM使用详解 #### 一、ROWNUM简介 在Oracle数据库中,`ROWNUM`是一个非常有用的伪列,它为查询结果中的每一行分配一个唯一的行号。这个行号从1开始,每增加一行,行号就递增1。`ROWNUM`对于数据...

    在oracle中灵活使用Rownum和rowId

    ### 在Oracle中灵活使用Rownum和RowId 在Oracle数据库中,`ROWNUM` 和 `ROWID` 是两个非常重要的概念,它们可以帮助我们在查询数据时实现更灵活的数据管理。本文将详细介绍这两个概念的区别及其使用方法,并通过...

    oracle个人总结

    - Oracle中可以通过ROWNUM伪列实现分页,但这种方法有局限性,不能查询“&gt;=”某个值的记录。 6. **数据复制与权限**: - 可以使用`CREATE TABLE AS SELECT`来复制表结构和内容。 - 权限管理使用`grant`关键字,...

    Oracle利用rownum查询出部分数据[归类].pdf

    总结一下,`ROWNUM`在Oracle中用于限制查询返回的行数,但它的行为并不直观,特别是在与`ORDER BY`一起使用时。理解`ROWNUM`的生成原理以及其与`ORDER BY`的交互对于优化SQL查询和获取预期结果至关重要。在实际的...

    韩顺平Oracle课堂资料总结

    ### 韩顺平Oracle课堂资料总结 #### 一、Oracle权限管理与操作 ##### 权限概述 在Oracle数据库中,权限管理是确保数据安全的重要手段之一。权限分为系统权限(System Privileges)和对象权限(Object Privileges)...

    oracle中利用关键字rownum查询前20名员工信息及rownum用法

    Oracle中的ROWNUM是一个重要的查询关键字,它用于限制查询返回的行数。ROWNUM是一个伪列,意味着它不是实际存储在表中的列,而是在执行查询时动态生成的。这个关键字在处理大型数据集时非常有用,可以有效地提高查询...

    rowid与rownum区别

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

    oracle_SQL中rowid与rownum的使用

    总结,`ROWID`和`ROWNUM`在Oracle SQL中各自扮演着不可或缺的角色。`ROWID`提供了直接访问数据的快速途径,而`ROWNUM`则为数据操作提供了行级别的控制。理解和熟练运用这两个特性,能够显著提升数据库查询和管理的...

    oracle函数总结

    "Oracle函数总结" Oracle数据库提供了多种函数来处理不同的数据类型,包括字符函数、数值函数、日期函数、转换函数、通用函数等。下面将对这些函数进行详细的介绍。 字符函数 字符函数用于处理字符串数据,常用的...

    oracle技术总结(BEST).doc

    以下是对"Oracle技术总结(BEST)"文档中提到的一些关键知识点的详细说明: 1. **Oracle用户和权限**: - **SYS用户**:Oracle数据库在安装时会自动生成SYS用户,这是一个拥有最高权限的超级用户,具备sysDBA角色,...

    rownum用法(不使用minus)

    总结而言,在使用 `rownum` 进行分页查询时需要注意以下几点: 1. 使用 `rownum = 1` 可以直接查询第一条记录。 2. 通过嵌套查询的方式可以实现 `rownum &gt; n` 的查询,从而获取从第 n+1 行开始的所有记录。 3. 使用...

    Oracle数据库学习日记-实用性最强的Oracle学习总结.docx

    - `SELECT * FROM (SELECT ROWNUM rnum, t.* FROM (SELECT * FROM table ORDER BY column) t WHERE ROWNUM ) WHERE rnum &gt;= (page_number - 1) * page_size + 1;` **8.7 用查询结果创建新表** - **语法示例:** ...

    oracle与SQL server的语法差异总结

    在Oracle中,ROWNUM是一个伪列,用于获取结果集中的部分记录。例如,`SELECT * FROM sysc01 WHERE ROWNUM 会返回前10条记录。ROWNUM只能使用小于等于(&lt;, )符号,不能使用大于等于(&gt;, &gt;=),并且如果使用等号(=...

    Oracle中如何用一条SQL快速生成10万条测试数据

    ROWNUM是Oracle中的一个伪列,用于返回行的顺序号,从1开始递增。在生成测试数据时,ROWNUM可以帮助我们控制生成记录的数量。CONNECT BY LEVEL则是一种递归查询的方法,可以用来生成连续的行,直到LEVEL的值达到指定...

    Oracle查询总结与优化

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

    Oracle分页(limit方式的运用)

    1. **ROWNUM**:Oracle提供了一个内置的伪列`ROWNUM`,它可以为查询结果集中的每一行返回一个唯一的行号。`ROWNUM`从1开始计数,并且只能用于`WHERE`或`HAVING`子句。 2. **OFFSET与FETCH FIRST**:虽然Oracle本身不...

Global site tag (gtag.js) - Google Analytics