【MySQL】什么是子查询

1.谁的工资比Abel的高?

image

方式一:先查询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 不相关子查询
相关:查询工资大于本部门平均工资的员工信息。(不同部门平均工资不同)
不相关:查询工资大于本公司平均工资的员工信息。

posted @ 2022-08-18 19:24  植树chen  阅读(55)  评论(0编辑  收藏  举报