千家信息网

怎么在oracle中使用rownum关键字查询员工信息

发表于:2025-11-08 作者:千家信息网编辑
千家信息网最后更新 2025年11月08日,本篇文章给大家分享的是有关怎么在oracle中使用rownum关键字查询员工信息,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。注意:对
千家信息网最后更新 2025年11月08日怎么在oracle中使用rownum关键字查询员工信息

本篇文章给大家分享的是有关怎么在oracle中使用rownum关键字查询员工信息,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。

注意:对 rownum(伪列) 只能使用 < 或 <=, 而用 =, >, >= 都将不能返回任何数据

例:查询工资前20名的员工姓名,工资 ,工资由高到低

Select rownum,first_name,salary from (Select first_name, salary from employees Group by salary desc) Where rownum=<20

如果直接按如下查询得下图结果,显然不正确的,rownum(伪列)

是按查询顺序来排列的,应当先查询筛选排好列,再查询例如上例

查询法;

Select rownum,first_name,salary from employees Where rownum<20 order by salary desc

练习:查询工资10~20名的员工姓名,工资 ,工资由高到低

PS:ORACLE 中ROWNUM用法总结!

对于 Oracle 的 rownum 问题,很多资料都说不支持>,>=,=,between...and,只能用以上符号(<、<=、!=),并非说用>,& gt;=,=,between..and 时会提示SQL语法错误,而是经常是查不出一条记录来,还会出现似乎是莫名其妙的结果来,其实您只要理解好了这个 rownum 伪列的意义就不应该感到惊奇,同样是伪列,rownum 与 rowid 可有些不一样,下面以例子说明

假设某个表 t1(c1) 有 20 条记录

如果用 select rownum,c1 from t1 where rownum < 10, 只要是用小于号,查出来的结果很容易地与一般理解在概念上能达成一致,应该不会有任何疑问的。

可如果用 select rownum,c1 from t1 where rownum > 10 (如果写下这样的查询语句,这时候在您的头脑中应该是想得到表中后面10条记录),你就会发现,显示出来的结果要让您失望了,也许您还会怀疑是不谁删了一 些记录,然后查看记录数,仍然是 20 条啊?那问题是出在哪呢?

先好好理解 rownum 的意义吧。因为ROWNUM是对结果集加的一个伪列,即先查到结果集之后再加上去的一个列 (强调:先要有结果集)。简单的说 rownum 是对符合条件结果的序列号。它总是从1开始排起的。所以你选出的结果不可能没有1,而有其他大于1的值。所以您没办法期望得到下面的结果集:

11 aaaaaaaa
12 bbbbbbb
13 ccccccc
.................

rownum >10 没有记录,因为第一条不满足去掉的话,第二条的ROWNUM又成了1,所以永远没有满足条件的记录。或者可以这样理解:

ROWNUM是一个序列,是oracle数据库从数据文件或缓冲区中读取数据的顺序。它取得第一条记录则rownum值为1,第二条为2,依次类 推。如果你用>,>=,=,between...and这些条件,因为从缓冲区或数据文件中得到的第一条记录的rownum为1,则被删除, 接着取下条,可是它的rownum还是1,又被删除,依次类推,便没有了数据。

有了以上从不同方面建立起来的对 rownum 的概念,那我们可以来认识使用 rownum 的几种现像

1. select rownum,c1 from t1 where rownum != 10 为何是返回前9条数据呢?它与 select rownum,c1 from tablename where rownum < 10 返回的结果集是一样的呢?

因为是在查询到结果集后,显示完第 9 条记录后,之后的记录也都是 != 10,或者 >=10,所以只显示前面9条记录。也可以这样理解,rownum 为9后的记录的 rownum为10,因条件为 !=10,所以去掉,其后记录补上,rownum又是10,也去掉,如果下去也就只会显示前面9条记录了

2. 为什么 rownum >1 时查不到一条记录,而 rownum >0 或 rownum >=1 却总显示所以的记录
因为 rownum 是在查询到的结果集后加上去的,它总是从1开始

3. 为什么 between 1 and 10 或者 between 0 and 10 能查到结果,而用 between 2 and 10 却得不到结果
原因同上一样,因为 rownum 总是从 1 开始

从上可以看出,任何时候想把 rownum = 1 这条记录抛弃是不对的,它在结果集中是不可或缺的,少了rownum=1 就像空中楼阁一般不能存在,所以你的 rownum 条件要包含到 1

但如果就是想要用 rownum > 10 这种条件的话话就要用嵌套语句,把 rownum 先生成,然后对他进行查询。

select *  from (selet rownum as rn,t1.* from a where ...) where rn >10


以上就是怎么在oracle中使用rownum关键字查询员工信息,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注行业资讯频道。

结果 查询 数据 工资 条件 员工 信息 关键 关键字 姓名 就是 序列 意义 文件 是在 更多 概念 知识 篇文章 缓冲区 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 数据库中怎么将删除的数据复原 数据库新增存储过程商品订单 什么cpu当服务器最好 通信网络安全类型 网站连接不上服务器什么原因 全球华人网络安全 写网络安全的语言 数据库中修改表结构命令 电脑无法访问文件服务器 名词解释网络安全的定义 热市热点管理服务器 网络安全复查报告表 软件开发奖励和销售业绩挂钩 如何实现百万并发的服务器架设 美俄网络安全合作 中国建成大数据数据库 武汉科百汇网络技术有限公司 石景山区信息化软件开发概况 网络安全 王伟中 服务器为什么要放在茅台里 公司网络安全有什么特点 全球知名软件开发学大学排名 浪潮服务器配饰管理卡 20信息及网络安全化 国家网络安全保护分几个等级 公司网络安全应急演练方案 数据库中导入java代码 黑客攻击服务器能提前化解吗 校园网络安全建设的必要性 网络安全的民用井
0