对于Oracle rownum特性解释,它是oracle系统顺序分配为从查询返回的行的编号,返回的第一行分配的是1,第二行是2,依此类推;这个伪字段可以用于限制查询返回的总行数,且rownum不能以任何表的名称作为前缀。rownum伪列是Oracle数据库中最重要的功能模块之一,因此Halo数据库在Oracle模式也已完成对它各种场景的适配,除了以上rownum解释的简单功能,我们对Oracle中rownum的功能场景扩展进行深度挖掘实现,包括rownum嵌套查询,ORDER BY 场景,层次查询,distinct场景,与非常量数字结合的表达式场景等rownum伪列可以实现的各种场景。
在说明之前,咱们先准备测试的一张基础数据表,员工表如下:
CREATE TABLE hi_emp (
empno NUMERIC(4) NOT NULL CONSTRAINT emp_pk PRIMARY KEY,
ename VARCHAR2(10),
job VARCHAR2(9),
mgr NUMERIC(4),
sal NUMERIC(7,2),
comm NUMERIC(7,2),
deptno NUMERIC(2)
);
INSERT INTO hi_emp VALUES (7839,'KING','PRESIDENT',NULL,5000,NULL,10);
INSERT INTO hi_emp VALUES (7369,'SMITH','CLERK',7902,800,NULL,20);
INSERT INTO hi_emp VALUES (7499,'ALLEN','SALESMAN',7698,1600,300,30);
INSERT INTO hi_emp VALUES (7521,'WARD','SALESMAN',7698,1250,500,30);
INSERT INTO hi_emp VALUES (7566,'JONES','MANAGER',7839,2975,NULL,20);
INSERT INTO hi_emp VALUES (7654,'MARTIN','SALESMAN',7698,1250,1400,30);
INSERT INTO hi_emp VALUES (7698,'BLAKE','MANAGER',7839,2850,NULL,30);
INSERT INTO hi_emp VALUES (7782,'CLARK','MANAGER',7839,2450,NULL,10);
INSERT INTO hi_emp VALUES (7788,'SCOTT','ANALYST',7566,3000,NULL,20);
INSERT INTO hi_emp VALUES (7844,'TURNER','SALESMAN',7698,1500,0,30);
INSERT INTO hi_emp VALUES (7876,'ADAMS','CLERK',7788,1100,NULL,20);
INSERT INTO hi_emp VALUES (7900,'JAMES','CLERK',7698,950,NULL,30);
INSERT INTO hi_emp VALUES (7902,'FORD','ANALYST',7566,3000,NULL,20);
INSERT INTO hi_emp VALUES (7934,'MILLER','CLERK',7782,1300,NULL,10);
复制
1、rownum行编号的功能
跟oracle一样,Halo数据库系统顺序分配为从查询返回的行的编号,返回的第一行分配的是1,第二行是2,依此类推。如下图所示:
2、rownum用来限制查询返回的总行数
如果希望找到员工表中第一条员工的信息,可以使用rownum=1作为条件。但是想找到员工表中第二条员工的信息,使用rownum=2结果查不到数据。因为rownum都是从1开始,但是1以上的自然数在rownum做等于判断时都认为是false条件,这样就无法查到rownum = n(n>1的自然数)。如下图所示:
3、rownum不能以任何表的名称作为前缀。
4、嵌套查询rownum功能
5、与ORDER BY 结合使用
6、层次查询
7、distinct查询
8、与非常量数字结合的表达式
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。
评论
对于Oracle rownum特性解释,它是oracle系统顺序分配为从查询返回的行的编号,返回的第一行分配的是1,第二行是2,依此类推;这个伪字段可以用于限制查询返回的总行数,且rownum不能以任何表的名称作为前缀。rownum伪列是Oracle数据库中最重要的功能模块之一,因此Halo数据库在Oracle模式也已完成对它各种场景的适配,除了以上rownum解释的简单功能,我们对Oracle中rownum的功能场景扩展进行深度挖掘实现,包括rownum嵌套查询,ORDER BY 场景,层次查询,distinct场景,与非常量数字结合的表达式场景等rownum伪列可以实现的各种场景
1年前

评论
相关阅读
2025年4月中国数据库流行度排行榜:OB高分复登顶,崖山稳驭撼十强
墨天轮编辑部
1893次阅读
2025-04-09 15:33:27
2025年3月国产数据库大事记
墨天轮编辑部
872次阅读
2025-04-03 15:21:16
2025年3月国产数据库中标情况一览:TDSQL大单622万、GaussDB大单581万……
通讯员
605次阅读
2025-04-10 15:35:48
征文大赛 |「码」上数据库—— KWDB 2025 创作者计划启动
KaiwuDB
497次阅读
2025-04-01 20:42:12
数据库,没有关税却有壁垒
多明戈教你玩狼人杀
488次阅读
2025-04-11 09:38:42
国产数据库需要扩大场景覆盖面才能在竞争中更有优势
白鳝的洞穴
466次阅读
2025-04-14 09:40:20
外国CTO也感兴趣的开源数据库项目——openHalo
小满未满、
433次阅读
2025-04-21 16:58:09
最近我为什么不写评论国产数据库的文章了
白鳝的洞穴
410次阅读
2025-04-07 09:44:54
OceanBase 接入 MCP 架构:贯通数据孤岛,释放 AI 创新潜能
OceanBase数据库
399次阅读
2025-03-28 15:32:52
说个大事,Halo开源
Salvatore-zz
369次阅读
2025-04-01 09:23:35