oracle怎么获取行,在oracle中如何实现SELECT TOP N取得前几行记录
在sql server中可以通过SELECT TOP N来取得想要结果的前几行的信息。
但是在oracle中必须借助伪列rownum来完成
一个查询语句在取得结果集后,伪列rownum就会从1开始,从上往下依次递增。rownum是对结果集的编序排列。例如下表:
SQL> select id,name,salary,rownum from wages;
ID NAME SALARY ROWNUM
---------- ---------- ---------- ----------
1 zhangsan 3600 1
2 lisi 2500 2
3 wangwu 5000 3
4 zhaoliu 4500 4
5 xiaoming 2000 5
所以取得该表的前三行,为
SQL> select id,name,salary,rownum from wages where rownum<=3;
ID NAME SALARY ROWNUM
---------- ---------- ---------- ----------
1 zhangsan 3600 1
2 lisi 2500 2
3 wangwu 5000 3
但是,这样直接取表的前N行一般是无意义的。rownum一般是和order by搭配使用,通过排序,再取得自己想要的前几行。
但是在使用rownum的时候要注意,使用排序后,返回的结果顺序是进行了排序,但是rownum还是和原来的一样,没有随着排序而改变。
原因:ROWNUM的编排在排序之前就产生了。
SQL> select id,name,salary,rownum from wages order by salary;
ID NAME SALARY ROWNUM
---------- ---------- ---------- ----------
5 xiaoming 2000 5
2 lisi 2500 2
1 zhangsan 3600 1
4 zhaoliu 4500 4
3 wangwu 5000 3
所以此时使用要取工资最高的前三名,就发生了错误的结果
SQL> select id,name,salary,rownum from wages where rownum<=3 order by salary;
ID NAME SALARY ROWNUM
---------- ---------- ---------- ----------
2 lisi 2500 2
1 zhangsan 3600 1
3 wangwu 5000 3
但是,我们可以需要嵌套一层子查询来抽取排序好的数据
SQL> select id,name,salary,rownum from (select * from wages order by salary);
ID NAME SALARY ROWNUM
---------- ---------- ---------- ----------
5 xiaoming 2000 1
2 lisi 2500 2
1 zhangsan 3600 3
4 zhaoliu 4500 4
3 wangwu 5000 5
此时,rownum已经发生了变化,在通过外部查询指定范围,就可以得到想要的正确结果
SQL> select id,name,salary,rownum from (select * from wages order by salary) where rownum<=3;
ID NAME SALARY ROWNUM
---------- ---------- ---------- ----------
5 xiaoming 2000 1
2 lisi 2500 2
1 zhangsan 3600 3
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/31386161/viewspace-2128815/,如需转载,请注明出处,否则将追究法律责任。
oracle怎么获取行,在oracle中如何实现SELECT TOP N取得前几行记录相关推荐
- 进阶指令——df指令(作用:查看磁盘的空间)、free指令(作用:查看内存使用情况)、head指令(作用:查看一个文件的前n行,如果不指定n,则默认显示前10行)、tail指令、less指令
1.df指令 作用:查看磁盘的空间 语法:#df -h -h表示以可读性较高的形式展示大小 2.free指令 作用:查看内存使用情况 语法:#free -m -m表示以mb为单位查看 剩余的真实可 ...
- oracle sql 获取当前时间,Oracle 在SQL语句中如何获取系统当前时间并进行操作
### 前言 Oracle中如何获取系统当前时间进行语句的筛选是SQL语句的常见功能 获取系统当前时间 date类型的: select sysdate from dual; char类型的: sele ...
- oracle sql获取本季度,oracle sql 获取本季度所有月份,上季度所有月份
上季度所有月份: ),-ROWNUM),'YYYYMM') LAST_Q A FROM DUAL) CONNECT ; 本季度所有月份: ),-ROWNUM),'YYYYMM') LAST_Q FRO ...
- mysql top limit_MySQL中如何实现select top n ----Limit
用惯了access mssql server的朋友,可能在用mysql查询前N条记录时,习惯的使用select top n 形式的语句,在这里说明一下,mysql没有此语法,mysql用limit来实 ...
- mysql只显示前几行_常见数据库SELECT结果只显示前几条记录方法汇总
为了查看数据表中的数据情况.经常会遇到想让查询结果只显示N行,比如只显示10行的情况.不同的数据库有不同的关键字和SELECT实现语法. 1.SQL Server数据库 select top 10 ...
- oracle用户获取datameta权限,Oracle数据库提权(低权限提升至dba)
0x01 Oracle存储过程"缺陷" 在 Oracle 的存储过程中,有一个有趣的特点:运行权限.运行权限分为两种,definer 和 invoker. definer 为函数创 ...
- oracle如何获取xml节点,oracle解析xml,带命令空间的节点获取
在xml里有两个解析xml的函数extract和extractVALUE,这两个函数可以带两个参数,也可以带上个参数,第三个参数是命令空间,对于namespace_string,刚开始我也很疑惑,然后 ...
- oracle表连接——处理连接过程中另外一张表没有相关数据不显示问题
一个数据表基本上很难满足我们的查询要求,同时,将所有的数据都保存在一个表格中显然也不是一种好的数据库设计,为了避免数据的冗余,删除.更新异常,我们通常需要建立一张外键表,通过表连接,来获取我们自己想要 ...
- oracle不显示表和过程,oracle表连接——处理连接过程中另外一张表没有相关数据不显示问题...
一个数据表基本上很难满足我们的查询要求,同时,将所有的数据都保存在一个表格中显然也不是一种好的数据库设计,为了避免数据的冗余,删除.更新异常,我们通常需要建立一张外键表,通过表连接,来获取我们自己想要 ...
最新文章
- 汪国华 基因组分析的生物信息学算法
- shared_ptr 的使用及注意事项
- bert简介_关于BERT:你不知道的事
- linux 编写完程序吗,linux下编写C++程序
- vue 生成发布包_Vue 3.0 终于正正正正正式发布了!
- 车险往年保单关联计算的性能优化
- Bootstrap3 工具提示插件的事件
- dmol3给定关键字不在字典中_一日一技:举例说明python中的map()方法
- 网络热词下的民意传播
- spring学习笔记一(基于xml)
- Windows Server 2008 R2之三十八 Hyper-V的授权管理
- 【5年Android从零复盘系列之三十四】Android存储(9):腾讯MMKV 高性能键值存储组件详解
- 817c语言程序设计,全国名校C语言程序设计考研真题汇编
- Google浏览器书签栏优化
- 【解决】RuntimeError:Trying to backward throughthe graph a second time
- 十年后的我们会是什么样的呢,二十年后的我国 会是什么样呢
- 使用Heartbeat实现双机热备
- jeecgboot功能优化——前端表格换行与不换行
- PTA 数据结构与算法 7-29 修理牧场
- 【配置Hifive1-revB】设备管理器中不识别端口,Can not connect to J-Link via USB的解决办法
热门文章
- error C2440 “static_cast” 无法从“void (__thiscall CPppView )(void)”转换为“LRESULT (__thiscall
- 小小c#算法题 - 3 - 字符串语句反转
- 简单了解tengine
- Java Web的web.xml文件作用及基本配置(转)
- sqL编程篇(三) 游标与存储过程
- MySQL数据库和ACID模型
- Fast Image Cache – iOS 应用程序高性能图片缓存
- C语言中return和exit的区别
- 我来告诉你为什么中国民营企业管理失败的原因!
- r psm倾向性匹配_南瓜香料指标psm如何规划季节性广告