多表查询-子查询概述,子查询情况1,子查询情况2,子查询情况3

多表查询-子查询概述

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

-- 查询工资最高的员工信息
-- 1.查询最高的工资是多少
SELECT MAX(salary) FROM emp

-- 2.查询员工信息,并且工资等于9000
SELECT * from emp where emp.salary = 9000

-- 用一条sql语句完成上面两条语句
SELECT * FROM emp where emp.salary = (SELECT MAX(salary) FROM emp)

 

子查询的不同情况:

子查询情况1:

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

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

-- 查询员工工资小于平均工资的人

SELECT AVG(salary) FROM emp 
SELECT * FROM emp where emp.salary < (SELECT AVG(salary) FROM emp)

 

子查询情况2:

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

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

-- 查询'财务部'和'市场部'所有 的员工信息
SELECT id FROM dept where name = '财务部' or name = '市场部'
SELECT * from emp  where dept_id = 3 or dept_id = 2


SELECT * FROM emp where dept_id in (SELECT id FROM dept where name = '财务部' or name = '市场部')
SELECT * FROM emp where dept_id in (3,2)

 

子查询情况3

子查询结果是多行多列的

 

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

-- 普通内连接
SELECT * FROM emp t1,dept t2 where t1.dept_id = t2.id and t1.join_date > '2011-11-11'

 

  

 

posted @ 2022-10-12 10:15  漁夫  阅读(31)  评论(0)    收藏  举报