Appearance
子查询
子查询在主查询之前一次执行完成 子查询的结果被主查询使用
sql
# 谁的工资比 Abel 高
SELECT last_name, salary
FROM employees
WHERE last_name = 'Abel';
SELECT last_name, salary
FROM employees
WHERE salary > 11000;
# 自连接实现
SELECT e2.last_name, e2.salary
FROM employees e1, employees e2
WHERE e2.salary > e1.salary
AND e1.last_name = 'Abel';
# 子查询实现
# 外查询(主查询)
SELECT last_name, salary
FROM employees
WHERE salary > (
# 内查询(子查询)
SELECT salary
FROM employees
WHERE last_name = 'Abel'
);子查询包在括号内 子查询写在比较条件的右侧 单行操作符对应单行子查询 多行操作符对应多行子查询
子查询的分类
从内查询返回结果的条目数
单行子查询
内查询只查询出一个结果
多行子查询
内查询只查询出多个结果
从内查询是否被执行多次
相关子查询
如查询工资大于所属部门平均工资的员工
不相关子查询
如查询工资大于公司平均工资的员工