结果集只有一列多行
| 操作符 | 含义 |
|---|---|
IN、NOT IN |
等于列表中的任意一个。 |
ANY、SOME |
和子查询返回的某一个值比较,不推荐用。 和中文思维理解有歧义。 |
ALL |
和子查询返回的所有值比较。不推荐用。 和中文思维理解有歧义。 |
-- 案例1:返回location_id是1400或1700的部门中的所有员工姓名-- ①查询location_id是1400或1700的部门编号SELECT DISTINCT department_idFROM departmentsWHERE location_id IN(1400,1700)-- ②查询员工姓名,要求部门号是①列表中的某一个SELECT last_nameFROM employeesWHERE department_id <>ALL(SELECT DISTINCT department_idFROM departmentsWHERE location_id IN(1400,1700));-- 案例2:返回其它工种中比job_id为‘IT_PROG’工种任一工资低的员工的员工号、姓名、job_id 以及salary-- ①查询job_id为‘IT_PROG’部门任一工资SELECT DISTINCT salaryFROM employeesWHERE job_id = 'IT_PROG'-- ②查询员工号、姓名、job_id 以及salary,salary<(①)的任意一个SELECT last_name,employee_id,job_id,salaryFROM employeesWHERE salary<ANY(SELECT DISTINCT salaryFROM employeesWHERE job_id = 'IT_PROG') AND job_id<>'IT_PROG';-- 或SELECT last_name,employee_id,job_id,salaryFROM employeesWHERE salary<(SELECT MAX(salary)FROM employeesWHERE job_id = 'IT_PROG') AND job_id<>'IT_PROG';-- 案例3:返回其它部门中比job_id为‘IT_PROG’部门所有工资都低的员工 的员工号、姓名、job_id 以及salarySELECT last_name,employee_id,job_id,salaryFROM employeesWHERE salary<ALL(SELECT DISTINCT salaryFROM employeesWHERE job_id = 'IT_PROG') AND job_id<>'IT_PROG';-- 或SELECT last_name,employee_id,job_id,salaryFROM employeesWHERE salary<(SELECT MIN( salary)FROM employeesWHERE job_id = 'IT_PROG') AND job_id<>'IT_PROG';
