Oracle 中 FETCH FIRST ... ROWS WITH TIES子句

在 Oracle 数据库中,FETCH FIRST ... ROWS WITH TIES 是一个子句,它用于与 ORDER BY 子句结合,以获取与第一组(根据排序条件)具有相同排序值的所有行。这通常用于在结果集中包括那些与最前面的几行具有相同排序值的行。

FETCH FIRST ... ROWS WITH TIES 是一个子句,Oracle 12c 及更高版本中可用

下面是一个示例查询包含员工和他们工资的表:

sql 复制代码
HR@orcl> select employee_id,first_name,last_name,salary from employees ORDER BY salary DESC;

EMPLOYEE_ID FIRST_NAME           LAST_NAME                     SALARY
----------- -------------------- ------------------------- ----------
        100 Steven               King                           24000
        101 Neena                Kochhar                        17000
        102 Lex                  De Haan                        17000
        145 John                 Russell                        14000
        146 Karen                Partners                       13500
        201 Michael              Hartstein                      13000
        108 Nancy                Greenberg                      12008
        205 Shelley              Higgins                        12008
        147 Alberto              Errazuriz                      12000
        168 Lisa                 Ozer                           11500
        114 Den                  Raphaely                       11000

例如,假设你有一个包含员工和他们工资的表,并且你想获取工资最高的前两个员工。但是,如果有多个员工具有相同的最高工资,你可能也想包括他们。这时,你可以使用 FETCH FIRST ... ROWS WITH TIES。

sql 复制代码
HR@orcl> select employee_id,first_name,last_name,salary from employees ORDER BY salary DESC fetch first 2 rows with ties;

EMPLOYEE_ID FIRST_NAME           LAST_NAME                     SALARY
----------- -------------------- ------------------------- ----------
        100 Steven               King                           24000
        101 Neena                Kochhar                        17000
        102 Lex                  De Haan                        17000

在这个查询中:

  • ORDER BY salary DESC 会将员工按工资从高到低排序。

  • FETCH FIRST 2 ROWS WITH TIES 会获取前两名(即工资最高的两名),但如果有多名员工的工资与这两名相同,那么这些员工也会被包括在结果集中。

这个子句在 Oracle 12c 及更高版本中可用。如果你使用的是较早版本的 Oracle,那么你可能需要使用不同的方法(如子查询或窗口函数)来实现相同的效果。

相关推荐
老邓计算机毕设3 小时前
SSM学生选课系统xvbna(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面
数据库·学生选课系统·ssm 框架·高校教学管理
枷锁—sha3 小时前
【PortSwigger Academy】SQL 注入绕过登录 (Login Bypass)
数据库·sql·学习·安全·网络安全
逍遥德5 小时前
PostgreSQL 中唯一约束(UNIQUE CONSTRAINT) 和唯一索引(UNIQUE INDEX) 的核心区别
数据库·sql·postgresql·dba
工业甲酰苯胺5 小时前
字符串分割并展开成表格的SQL实现方法
数据库·sql
科技块儿6 小时前
IP定位技术:游戏反外挂体系中的精准识别引擎
数据库·tcp/ip·游戏
衫水6 小时前
[特殊字符] MySQL 常用指令大全
数据库·mysql·oracle
卓怡学长6 小时前
m115乐购游戏商城系统
java·前端·数据库·spring boot·spring·游戏
小句7 小时前
SQL中JOIN语法详解 GROUP BY语法详解
数据库·sql
阿杰 AJie7 小时前
MySQL 里给表添加索引
数据库·mysql
昊昊该干饭了7 小时前
一个真实查询需求如何从表设计走到高效 SQL
数据库·sql