当前位置:网站首页>Oracle中实现获取指定行内容——Rownum和Row_number()
Oracle中实现获取指定行内容——Rownum和Row_number()
2022-06-21 16:00:00 【牛奶咖啡13】
一、需求说明
在使用Oracle数据库进行业务开发的过程中需要获取到指定行的内容。
二、思路分析
经过查阅相关资料,发现可以使用Rownum和Row_number()实现我们想要的效果。
| 序号 | 名称 | 说明 |
| 1 | ROWNUM | 表示:用于从查询的结果集中返回对应行的编号,返回的第一行分配的是1,第二行是2,第三行是3等等,后面的依此类推,这个行伪字段可以用于限制查询返回的总行数(适用于分页、和指定行内容查询),而且rownum不能以任何表的名称作为前缀。 |
| 2 | Row_number() | ①row_number() over(partition by 需要分组的字段 order by 排序的字段 ); ②row_number() over(order by 排序的字段); 此函数计算的值就表示每组内部排序后的顺序编号(组内是连续唯一的) |
注意:【ROWNUM】是进行排序的时候是先对结果集加入虚拟列rownum然后再进行排序;而Row_number()则是在包含排序从句后是先排序再计算行编号。
三、实现方法
3.1、ROWNUM
3.1.1、查看内容对应的数据编号
--查看当前表格的内容与行号(语法)
SELECT ROWNUM,字段名 from 表名;

3.1.2、查看指定行内容
--查看指定行内容(语法)
SELECT t.* FROM (SELECT ROWNUM rm,字段名 from 表名) t WHERE rm=需要查看的行编号
3.1.3、对指定排序条件查看的内容分页
--对查询内容排序后分页(语法)
SELECT * FROM (SELECT ROWNUM rm,t.* FROM (SELECT 字段名 from 表名 ORDER BY 字段名) t ) WHERE rm>=开始编号 AND rm<=结束编号注意:如果需要对查询内容排序,就不能直接使用Rownum进行分页查询,因为编号顺序不对,如下图所示:

正确的对排序后的内容分页查询是使用子查询(即:先处理查询内容,然后在使用ROWNUM),如下图所示:


3.1.4、对指定分组排序条件查看的内容分页
----对指定分组排序条件查看的内容分页(语法)
SELECT * FROM (SELECT ROWNUM rm,t.* FROM (SELECT 字段名1,字段名2 from 表名 GROUP BY 字段名2,字段名1 ORDER BY 字段名2,字段名1) t ) WHERE rm>=开始行编号 AND rm<=结束行编号

3.2、Row_number()
3.2.1、查看内容对应的数据编号
--查询指定条件内容(语法)
SELECT row_number() over(order by 字段) rn,字段名 from 表名;

3.2.2、查看指定行你内容
--查看指定行内容(语法)
SELECT * FROM (SELECT row_number() over(order by 字段名) rn,字段名 from 表名) WHERE rn=需要查看的编号;

3.2.3、对指定排序条件查看的内容分页
SELECT * FROM (SELECT row_number() over(order by 字段名) rn,字段名 from 表名) WHERE rn>=开始行编号 AND rn<=结束行编号
3.2.4、对指定分组排序条件查看的内容分页
--对指定分组排序条件查看的内容分页
SELECT * FROM (SELECT row_number() over(partition by 需分组的字段名 order by 需排序的字段名 ) rn,字段名1,字段名2 from 表名) WHERE rn>=开始行的编号 AND rn<=结束行的编号

四、其他学习资料
Oracle中rownum和row_number()
https://www.codeleading.com/article/29563134126/oracle中row_number和rownum的区别和联系(翻译)
https://www.cnblogs.com/autumnlj/p/5815210.html
边栏推荐
- 之前的装机记录
- Introduction to mqtt protocol
- Serious illness insurance covers serious illness. Which product is the best in the market? Please recommend it
- In 2021 database market, aerospike competes with top manufacturers
- [理论]--接口测试
- 未定义的函数或变量【一文讲透】(Matlab)
- 关于规范共有产权住房出租管理工作的通知(试行)
- Machine learning model monitoring (Apria)
- 7 tips for writing effective help documents
- IDC Consulting: in 2022, China's relational database software market is about to change
猜你喜欢

微信小程序开发入门介绍-布局组件

Alibaba cloud server + pagoda panel + no domain name deployment web project

Generating test reports using the unittest framework

Huawei (13) - route introduction

How to write test cases

Wechat applet development tutorial - Introduction to text components

VNC Viewer方式的远程连接树莓派

Machine learning model monitoring (Apria)

快来围观–TPT18新版报到

Yaml文件详解
随机推荐
d改进翻译
Pytest--生成测试报告
Online text list batch add line number tool
Résolution des erreurs signalées par qtcreator
Complete tutorial on reinstalling your computer system
鲁班会开发者深度论坛丨与成都伙伴一起 “洞见物联网新风潮”
Huawei cloud released the white paper on cloud native 2.0 architecture, and the gaussdb technology was upgraded again
Why do you want to develop tea mall applet app?
Unable to boot device in current state: started - unable to boot device in current state: booted
Implementation and landing of any to any real-time voice change RTC dev Meetup
使用 Guzzle 中间件进行优雅的请求重试
之前的装机记录
重磅丨国内首份呈现数据库发展历程的图鉴正式发布!
2022年Q1手机银行用户规模达6.5亿,加强ESG个人金融产品创新
MQTT协议介绍
Do Internet companies do unit tests? Is it necessary to do unit testing for the needs of the bank?
期货农产品开户怎么开?手续费是多少?
Ares Ares I pledged LP mining crowdfunding model DAPP smart contract customization
Advanced performance test series 4. premise, tool and process of performance test
Wechat applet development tutorial - Introduction to text components