最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
在Oracle结果集中添加自增序号:6种实现方式
时间:2026-06-08 08:41:59 编辑:袖梨 来源:一聚教程网
Oracle 提供了多种方法来为查询结果添加自增序号,以下是常用的几种方法:

1. 使用 ROWNUM 伪列(最基础方法)
SELECT ROWNUM AS row_num, column1, column2FROM your_tableWHERE ROWNUM <= 100ORDER BY some_column;
注意:
ROWNUM 是在数据检索后分配的,如果在 ORDER BY 之前使用,可能会得到非预期的结果。
2. 使用 ROW_NUMBER() 分析函数(推荐)
SELECT ROW_NUMBER() OVER (ORDER BY some_column) AS row_num, column1, column2FROM your_table;
3. 使用 RANK() 或 DENSE_RANK() 函数(处理相同值情况)
-- RANK():相同值会有相同序号,下一个不同值会跳过相应位置SELECT RANK() OVER (ORDER BY some_column) AS rank_num, column1, column2FROM your_table;-- DENSE_RANK():相同值有相同序号,但不会跳过序号SELECT DENSE_RANK() OVER (ORDER BY some_column) AS dense_rank_num, column1, column2FROM your_table;
4. 按分组添加序号
SELECT ROW_NUMBER() OVER (PARTITION BY dept_id ORDER BY salary DESC) AS dept_rank, employee_id, name, salary, dept_idFROM employees;
5. 使用子查询实现(兼容性更好的方法)
SELECT ROWNUM AS row_num, t.*FROM ( SELECT column1, column2 FROM your_table ORDER BY some_column) t;
6. 高级用法:分页查询带序号
-- 11-20条记录(第二页,每页10条)SELECT * FROM ( SELECT ROW_NUMBER() OVER (ORDER BY some_column) AS row_num, t.* FROM your_table t)WHERE row_num BETWEEN 11 AND 20;
注意事项
- 性能考虑:分析函数通常比 ROWNUM 子查询方法更高效
- 排序影响:确保 ORDER BY 子句正确,否则序号可能不符合预期
- 相同值处理:根据业务需求选择 ROW_NUMBER()、RANK() 或 DENSE_RANK()
- 分区序号:使用 PARTITION BY 可以为每个分组重新开始编号
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持本站。
相关文章
- 快手TV版下载安装 - 2026官方正版客户端 06-12
- 彭博社官网入口 - 2026最新国际财经资讯平台 06-12
- 优质网站推荐平台 - 窝窝网 06-12
- 小马云最新视频合集 - 2026年真实影像回顾 06-12
- B站网页版登录入口 - 2026官方正版在线登录 06-12
- 包子漫画官网入口 - 免费在线观看热门漫画 06-12