首页 > 数据库 >oracle-rownum详解

oracle-rownum详解

时间:2023-10-16 14:33:31浏览次数:75  
标签:name 查询 详解 第二行 oracle rownum 数据 select

Oracle中的rownum用法详解:

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开始的伪例,rownum>n (n>1的自然数)依然不成立。可以使用子查询来解决,注意子查询中的rownum必须要有别名,否则还是不会查出记录来,这是因为rownum不是某个表的列,如果不起别名的话,无法知道rownum是子查询的列还是主查询的列。

例如:

select * from(select rownum no ,id,name from student) where no>2;

 

3.rownum对于小于某值的查询条件: rownum对于rownum<n((n>1的自然数)的条件认为是成立的,所以可以找到记录。

注意:对于查询rownum在某区间的数据,必须使用子查询,例如要查询rownum在第二行到第三行之间的数据,包括第二行和第三行数据,那么我们只能写以下语句,先让它返回小于等于三的记录行,然后在主查询中判断新的rownum的别名列大于等于二的记录行。但是这样的操作会在大数据集中影响速度。

select * from (selectrownum no,id,name from student where rownum<=3 ) where no >=2

 

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

select rownum ,id,name from student order by name;

对于这个查询语句,rownum并不是按name生成的序号,系统是按照记录插入时的顺序给记录排的号,rowid也是顺序分配的。为了解决这个问题,必须使用子查询:

select rownum ,id,name from (select * from student order by name);

 

 

 

 

 

 

 

 

 

 

 

发布于 2020-09-03 09:40

标签:name,查询,详解,第二行,oracle,rownum,数据,select
From: https://www.cnblogs.com/moonsoft/p/17767269.html

相关文章

  • Oracle Cloud 更换MFA(2步验证)设备
    OracleCloud更换MFA(2步验证)设备1.起因发现越狱的ios设备,在移动数据模式下无法稳定获取IPV6地址,也不知道哪个插件影响的。所以想恢复系统重新越狱试一下,但手机安装了OracleCloud的2步验证程序,之前想更换,一直没找到在哪设置的2.更换过程中另外一个问题:找不到个人账号的设置......
  • CentOS7.9部署Oracle
    CentOS7.9部署Oracle整体思路准备好CentOS7.9系统和Oracle安装包。Oracle下载链接:https://www.oracle.com/database/technologies/oracle-database-software-downloads.html系统配置最低要求:1c,2G可用内存需要交换空间介于1GB和2GB之间RAM大小的1.5倍介于2GB和16G......
  • 详解.NET依赖注入中对象的创建与“销毁”
    在DI容器中注册类型,DI容器就可以帮我们创建类型的实例;如果注册类型实现了IAsyncDisposable或者IDisposable接口,对象销毁时DI容器还会帮我们调用DisposeAsync或Dispose方法。这是如何实现的呢?一起来看看吧。本文是基于DependencyInjection8.0编写。如果已熟练使用,可以直接从第三......
  • docker安装配置oracle19c
    1.拉取oracle19c镜像,我这边使用的是:registry.cn-hangzhou.aliyuncs.com/zhuyijun/oracle2.创建Oracle容器: dockerrun-d-p1521:1521--nameoracle19c-dregistry.cn-hangzhou.aliyuncs.com/zhuyijun/oracle:19c  可以看到状态是Starting,具体日志可以查看 dock......
  • JWT详解
    一、JWT认证原理JWT(JsonWebToken)是一种服务端向客户端发放令牌的认证方式。客户端用户名密码登录时,服务端会生成一个令牌返回给客户端;客户端随后在向服务端请求时只需携带这个令牌,服务端通过校验令牌来验证是否是来自合法的客户端,进而决定是否向客户端返回应答。简单来说,就是......
  • MySQL分区表详解
    本文已收录至GitHub,推荐阅读......
  • 裴蜀定理(详解)
    裴蜀定理先说一下什么是裴蜀定理吧在数论中,裴蜀定理是一个关于最大公约数(或最大公约式)的定理,裴蜀定理得名于法国数学家艾蒂安·裴蜀。——引自百度百科定理的具体内容:若a,ba,ba,b是整数,且gcd⁡(a,b)=d\gcd(a,b)=dgcd(a,b)=d,那么对于任意的整数x,y,......
  • 详解apt、yum、dnf 和 pkg
    介绍包管理系统除了安装软件外,它还提供了工具来更新已经安装的包。包存储库有助于确保你的系统中使用的代码是经过审查的,并且软件的安装版本已经得到了开发人员和包维护人员的认可。在配置服务器或开发环境时,我们最好了解下包在官方存储库之外的情况。某个发行版的稳定版本中的......
  • Java基础 不可变集合详解
    如果不想让别人修改集合中的内容,只想让别人仅能够查询数据,就可以用不可变集合 在List、Set、Map接口中,都存在静态的of方法,可以获取一个不可变的集合eg:List<String>list=List.of("张三","李四");......
  • C语言快速排序详解
    【1】快速排序核心思想核心思想是分而治之,每一轮排序都会选出一个基准,一轮排序完成后,所有比基准小的数一定在左边,比基准大的数一定在右边,在分别通过同样的方法对左右两边的数组进行排序,不断划分,最后完成整个数组的排序。它的效率相比冒泡排序的双重for循环有所提升。时间复杂......