it编程 > 数据库 > Oracle

在Oracle结果集中添加自增序号的6种实现方式

2人参与 2026-03-20 Oracle

oracle 提供了多种方法来为查询结果添加自增序号,以下是常用的几种方法:

1. 使用 rownum 伪列(最基础方法)

select 
    rownum as row_num,
    column1, 
    column2
from your_table
where rownum <= 100
order by some_column;

注意

rownum 是在数据检索后分配的,如果在 order by 之前使用,可能会得到非预期的结果。

2. 使用 row_number() 分析函数(推荐)

select 
    row_number() over (order by some_column) as row_num,
    column1, 
    column2
from your_table;

3. 使用 rank() 或 dense_rank() 函数(处理相同值情况)

-- rank():相同值会有相同序号,下一个不同值会跳过相应位置
select 
    rank() over (order by some_column) as rank_num,
    column1, 
    column2
from your_table;

-- dense_rank():相同值有相同序号,但不会跳过序号
select 
    dense_rank() over (order by some_column) as dense_rank_num,
    column1, 
    column2
from your_table;

4. 按分组添加序号

select 
    row_number() over (partition by dept_id order by salary desc) as dept_rank,
    employee_id,
    name,
    salary,
    dept_id
from 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;

注意事项

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。

(0)

您想发表意见!!点此发布评论

推荐阅读

Oracle向量搜索功能测试报告详解

03-20

Oracle无效的数字格式模型使用详解

03-20

Oracle修复已损坏定时任务(Jobs)的方法步骤

03-13

Oracle数据库的使用及说明介绍Linux

03-09

Oracle通过RMAN备份至MinIO且防止数据删除的详细步骤

03-09

Oracle使用序列后提示违反唯一约束的解决方案

03-06

猜你喜欢

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论