any和all完全可以使用组函数替代啊
-- 示例:显示工作岗位不是 IT_PROG 的雇员,并且这些雇员的的薪水少于 IT_PROG 工作岗位最高薪水的雇员的 ID、名字、工作岗位和薪水。
-- 两种方式查询结果相同,只是记录顺序略有不同
-- 使用any实现:
select EMPLOYEE_ID, LAST_NAME, JOB_ID, SALARY
from EMPLOYEES
where JOB_ID <> 'IT_PROG'
and SALARY < any (select SALARY from EMPLOYEES where JOB_ID = 'IT_PROG');
-- 普通子查询实现
select EMPLOYEE_ID, LAST_NAME, JOB_ID, SALARY
from EMPLOYEES
where JOB_ID <> 'IT_PROG'
and SALARY < (select max(SALARY)
from EMPLOYEES
where JOB_ID = 'IT_PROG');
-- 示例:显示那些薪水低于工作岗位 IT_PROG 的最低薪水,并且工作岗位不是 IT_PROG 的所有雇员。
-- 小于IT_PROG的最低薪水显然不可能是IT_PROG的员工,所以不用限定
-- 使用All实现
select LAST_NAME, JOB_ID, SALARY
from EMPLOYEES
where SALARY < all (select SALARY from EMPLOYEES where JOB_ID = 'IT_PROG');
-- 使用普通子查询实现
select LAST_NAME, JOB_ID, SALARY
from EMPLOYEES
where SALARY < (select min(SALARY) from EMPLOYEES where JOB_ID = 'IT_PROG');