Oracle:select top 5

在Oracle数据库中实现SELECT TOP 5功能需采用特定语法,因其原生不支持TOP关键字。以下是两种主流实现方式:

  1. ROWNUM结合子查询

    先通过子查询排序数据,再在外层用ROWNUM限制行数:

    SELECT * FROM ( SELECT * FROM 表名 ORDER BY 排序字段 ) WHERE ROWNUM <= 5;

    此方法直接返回物理排序后的前5条记录。

  2. 分析函数ROW_NUMBER()

    使用窗口函数按分组和排序生成临时编号后筛选:

    SELECT * FROM ( SELECT t.*, ROW_NUMBER() OVER (ORDER BY 排序字段) AS rn FROM 表名 t ) WHERE rn <= 5;

    适用于需要分组取前N条的场景(如按部门取薪资前5员工)。

注意事项‌:

  • 未明确指定ORDER BY时,结果可能因物理存储顺序而异;
  • 若需分页(如第6-10条),需嵌套两层子查询调整ROWNUM范围。
相关推荐
cui_ruicheng8 小时前
MySQL(四):数据类型与字段设计
数据库·mysql
皮皮学姐分享-ppx9 小时前
政府绿色采购数据库(2015-2024.3)
大数据·网络·数据库·人工智能·制造
闪电悠米10 小时前
黑马点评-Redis 消息队列-03_stream_consumer_group
开发语言·数据库·redis·分布式·缓存·junit·lua
DIY源码阁11 小时前
JavaSwing航班订票管理系统 - MySQL版
数据库·mysql
浪客灿心12 小时前
项目篇:模块设计与实现
数据库·c++
流星白龙14 小时前
【MySQL高阶】26.事务(1)
数据库·mysql
三十..14 小时前
Redis 核心原理与高可用架构实践
运维·数据库·redis
这个DBA有点耶15 小时前
索引优化深潜(下):索引合并、ICP 与索引设计的实战法则
数据库·mysql·架构
努力努力再努力wz15 小时前
【内存管理与高并发内存池系列】从 mmap 到 malloc:文件映射、匿名映射与 glibc 内存分配机制详解
linux·c语言·数据结构·数据库·c++·qt·链表
Theo·Chan15 小时前
机房断电搞崩服务器 | 人大金仓 V8 全量备份跨实例完整恢复实录
sql·信创·kingbase·金仓