目录
1.谁的工资比Abel的高?
方式一:先查询Abel的工资,再查比Abel工资高的员工
SELECT 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'
);
子查询(内查询)在主查询之前一次执行完成,子查询的结果被主查询使用。
注意事项:
(1)子查询要包含在括号内
(2)将子查询放在比较条件的右侧
(3)单行操作符对应单行子查询,多行操作符对应多行子查询
2.子查询的分类
(1)从内查询返回的结果数:单行子查询 VS 多行子查询
(2)内查询是否被执行多次:相关子查询 VS 不相关子查询
相关:查询工资大于本部门平均工资的员工信息。(不同部门平均工资不同)
不相关:查询工资大于本公司平均工资的员工信息。