子查询是另一个更大查询中的查询。它们对于获取稍后将在主查询中使用的特定信息很有用。
类型
- 单行子查询:
返回单个值。
- 多行子查询
返回多行
- 相关子查询
它取决于主查询中的列,这意味着它对外部查询中的每一行执行一次。
- 嵌套子查询
其中包含另一个子查询的子查询。
- 标量子查询
返回单个值(类似于单行子查询),但可以用作 select 中的列。
子查询可以出现在查询的 3 个位置:
- 选择
- 来自或内部
- 哪里
每个部分都有一套规则。
例如:
- select 中的子查询应返回单个值,例如:
select nombre, (select max(salary) from employees) as max_salary from employees;
-
from or inner 中的子查询应返回一组行
-
where 中的子查询应返回包含许多行的列,例如:
SELECT NAME FROM EMPLOYEES WHERE DEPARTMENT_ID = (SELECT ID FROM DEPARTMENTS WHERE DEPARTMENT = 'IT');