Oracle 中的 ALL 操作符详解
Oracle 中的 ALL
操作符详解
在 Oracle SQL 中,ALL
是一个用于集合比较的关键字,常出现在与比较运算符(如 >
, <
, =
, >=
, <=
, <>
)结合的表达式中。它允许你将某个值与子查询返回的所有值进行比较,是编写复杂 SQL 查询的重要工具。
一、ALL
的基本语法
表达式 比较运算符 ALL (子查询)
解释: 表示“表达式与子查询返回的所有值进行比较”。
二、常见用法说明
1️⃣ 大于子查询返回的所有值
SELECT ename, sal
FROM emp
WHERE sal > ALL (
SELECT sal FROM emp WHERE job = 'CLERK'
);
含义: 找出工资比所有 CLERK 工资都高的员工。 👉 等价于:
SELECT ename, sal
FROM emp
WHERE sal > (
SELECT MAX(sal) FROM emp WHERE job = 'CLERK'
);
2️⃣ 小于子查询返回的所有值
SELECT ename, sal
FROM emp
WHERE sal < ALL (
SELECT sal FROM emp WHERE deptno = 10
);
含义: 找出工资比部门 10 所有员工都低的员工。 👉 等价于:
SELECT ename, sal
FROM emp
WHERE sal < (
SELECT MIN(sal) FROM emp WHERE deptno = 10
);
3️⃣ 等于所有值(几乎不会成立)
SELECT ename
FROM emp
WHERE deptno = ALL (
SELECT deptno FROM emp WHERE job = 'CLERK'
);
含义: 返回那些部门编号等于所有 CLERK 所在部门编号的员工。 👉 只有当所有 CLERK 都在同一个部门,且该员工也在那个部门时,此条件才成立。
三、与 ANY
和 IN
的区别
四、注意事项
子查询必须返回一列多行;
若子查询返回空集,则:
> ALL (空)
、< ALL (空)
等条件会返回TRUE
;= ALL (空)
会返回FALSE
;
ALL
不可直接用于多列比较;ALL
通常用于需要与MAX
或MIN
比较时的替代写法。
五、实战案例
📌 案例 1:找出工资最高的员工(使用 ALL
)
SELECT ename, sal
FROM emp
WHERE sal >= ALL (
SELECT sal FROM emp
);
✅ 等价于 sal = (SELECT MAX(sal) FROM emp)
。
📌 案例 2:找出工资比所有 MANAGER 都低的员工
SELECT ename, sal
FROM emp
WHERE sal < ALL (
SELECT sal FROM emp WHERE job = 'MANAGER'
);
六、面试回答模板(可直接背诵)
Oracle 中的
ALL
用于将一个值与子查询返回的所有值进行比较,比如> ALL (子查询)
表示比子查询结果中的最大值还大。它在一些复杂条件判断中比聚合函数更灵活,但使用时需确保子查询只返回一列。
七、总结
- 感谢你赐予我前进的力量
赞赏者名单
因为你们的支持让我意识到写文章的价值🙏
本文是原创文章,采用 CC BY-NC-ND 4.0 协议,完整转载请注明来自 Noah
评论
匿名评论
隐私政策
你无需删除空行,直接评论以获取最佳展示效果