多表查询中子查询的概述和子查询的不同情况

多表查询中子查询的概述

概念:查询中嵌套查询,被嵌套查询为子查询

-- 查询工资最高的员工信息
-- 查询最高的工资是多少 9000
SELECT MAX(salary) FROM emp1;
-- 查询员工信息,并且工资等于9000的
SELECT * FROM emp1 WHERE salary = 9000;
-- 一条sql就完成这个操作
SELECT * FROM emp1 WHERE salary = (SELECT MAX(salary) FROM emp1);

 

 

 

 

 

 

 

 

多表查询中子查询的不同情况

1、子查询的结果是单行单列

  子查询可以作为条件,使用运算符去判断

-- 查询员工工资小于平均工资的人
SELECT * FROM emp1 WHERE salary < (SELECT AVG(salary) FROM emp1);

 

2、子查询的结果是多行单列

  子查询可以作为条件,使用运算符in来判断

-- 查询财务部和市场部所有的员工信息
SELECT id FROM dept WHERE `NAME` = '财务部' OR `NAME` = '市场部';
SELECT * FROM emp1 WHERE dept_id = 3 OR dept_id = 2;
-- 子查询
SELECT * FROM emp1 WHERE dept_id IN (SELECT id FROM dept WHERE `NAME` = '财务部' OR `NAME` = '市场部');

 

3、子查询的结果是多行多列

  子查询可以作为一张虚拟表

-- 查询员工入职信息是2011-11-11日之后的员工信息和部门信息
SELECT * FROM dept t1,(SELECT * FROM emp1 WHERE emp1.join_date > '2011-11-11') t2
WHERE t1.id = t2.dept_id; 

-- 普通内连接查询
SELECT * FROM emp1 t1,dept t2 WHERE t1.dept_id = t2.id AND t1.join_date > '2011-11-11';

 

posted @ 2022-07-25 13:37  xjw12345  阅读(147)  评论(0)    收藏  举报