• 也称为集合比较子查询
  • 内查询返回多行
  • 使用多行比较操作符

多行比较操作符

操作符 含义
IN 等于列表中的任意一个
ANY 需要和单行比较操作符一起使用,和子查询返回的某一个值比较
ALL 需要和单行比较操作符一起使用,和子查询返回的所有值比较
SOME 实际上是 ANY 的别名,作用相同,一般常使用 ANY

体会 ANY 和 ALL 的区别

代码示例

题目:返回其它job_id中比job_id为‘IT_PROG’部门任一工资低的员工的员工号、姓名、job_id 以及salary

1554992658876.png
1554992664594.png
题目:返回其它job_id中比job_id为‘IT_PROG’部门所有工资都低的员工的员工号、姓名、job_id以及salary
1554992753654.png
1554992759467.png
题目:查询平均工资最低的部门id

  1. #方式1:
  2. SELECT department_id
  3. FROM employees
  4. GROUP BY department_id
  5. HAVING AVG(salary) = (
  6. SELECT MIN(avg_sal)
  7. FROM (
  8. SELECT AVG(salary) avg_sal
  9. FROM employees
  10. GROUP BY department_id
  11. ) dept_avg_sal
  12. )
  1. #方式2:
  2. SELECT department_id
  3. FROM employees
  4. GROUP BY department_id
  5. HAVING AVG(salary) <= ALL (
  6. SELECT AVG(salary) avg_sal
  7. FROM employees
  8. GROUP BY department_id
  9. )

空值问题

  1. SELECT last_name
  2. FROM employees
  3. WHERE employee_id NOT IN (
  4. SELECT manager_id
  5. FROM employees
  6. );