-- 多表查询之子查询
-- 单行单列 -->利用运算符:<=...
-- 多行单列--并集in(值1,值2,值3)
-- 多行多列 -- 将一个表中查询的数据---当做虚表-- 需求:查询员工工资最高的员工信息!
SELECT
*
FROM
emp
WHERE salary =
(SELECT
MAX(salary)
FROM
emp) ;-- 需求:查询员工工资小于平均工资的员工信息 -- 利用运算符<,>=.=,<=....
SELECT
*
FROM
emp
WHERE salary <
(SELECT
AVG(salary)
FROM
emp) ;SELECT *FROM emp;
-- 需求:查询在财务部或者在市场部的员工信息
SELECT
*
FROM
emp
WHERE emp.`dept_id` IN
(SELECT
dept.`id`
FROM
dept
WHERE NAME = '市场部'
OR NAME = '财务部') ;
-- 子查询的第三种情况:多行多列
-- 查询员工入职日期大于'2011-11-11'之后的员工信息以及部门名称SELECT
t1.*,
-- 虚表中的所有字段
t2.name -- 部门表部门名称
FROM
(SELECT
*
FROM
emp
WHERE join_date > '2011-11-11') t1 -- 虚表
LEFT JOIN dept t2
ON t1.dept_id = t2.id ;-- 普通链接
SELECT
t1.*,
t2.name
FROM
emp t1,
dept t2
WHERE t1.join_date > '2011-11-11'
AND t1.dept_id = t2.id ;