子查询:
查询中嵌套查询
查询工资最高的员工信息
1、查询了最高的工资是多少
SELECT MAX(salary) FROM emp;
2、查询员工信息,并且工资等于刚才查询的最高工资
SELECT *FROM emp WHERE emp.salary=9000;
合起来,用嵌套查询的方法
SELECT *FROM emp
WHERE emp.salary=(SELECT MAX(salary) FROM emp);
子查询的不同情况
1、子查询的结果是单行单列的:
子查询可以作为条件,使用运算符去判断
查询员工工资小于平均工资的人
SELECT NAME
FROM emp
WHERE
emp.salary<(SELECT AVG(salary) FROM emp);
查询财务部的所有员工信息
SELECT id FROM dept WHERE NAME='财务部';
SELECT * FROM emp WHERE dept_id=3;
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 ='市场部');
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';