进阶7:子查询
含义:出现在其他语句中的SELECT语句,称为子查询或内查询
外部的查询语句:称为主查询或外查询
分类: 按子查询出现的位置:SELECT后面(①)、FROM后面(④)、
WHERE或HAVING后面(①②③)※、EXISTS后面(相关子查询)(④)
按功能不同(结果集的行列数不同)分为:
①标量子查询(结果集有一行一列)
②列子查询==多行查询(结果集有一列多行)
③行子查询(结果集有一行多列)
④表子查询(结果集一般为多行多列)
一、WHERE或HAVING后面
特点:①子查询放在小括号内
②子查询一般放在条件的右侧
③标量子查询一般单配单行操作符使用
单行操作符:> < <> >= <=
列子查询一般搭配多行操作符使用
多行操作符:IN ANY/SOME ALL
④子查询执行优先于主查询(主查询条件用到了子查询的结果)
非法使用标量子查询的情况(子查询的结果不符合主查询要求的结果值)
1、标量子查询(单行子查询)
案例1:谁的工资比Abel高
SELECT salary,last_name
FROM employees
WHERE salary>(
SELECT salary
FROM employees
WHERE last_name='Abel'
);
案例2:返回job_id与141号员工相同,salary比143号员工多的员工的姓名、job_id、工资
SELECT last_name,job_id,salary
FROM employees
WHERE job_id=(
SELECT job_id
FROM employees
WHERE employee_id=141
) AND salary>(
SELECT salary
FROM employees
WHERE employee_id=143
);
案例3:返回公司工资最低的员工的last_name,job_id,salary
SELECT last_name,job_id,salary
FROM employees
WHERE salary=(
SELECT MIN(salary)
FROM employees
);
案例4:查询最低工资大于50号部门最低工资的部门id和其最低工资
SELECT depart