1.什么叫子查询?
通俗的讲就是查询中有查询,SQL语句中有多个select语句。
2.什么地方可以嵌入子查询?
SELECT 列 (不在标准之内)
FROM 表 (可以嵌入,作为表存在)
WHERE 条件 (可以嵌入,作为条件存在)
3. 举例说明
假如此时有一个员工表emp,里面记录了员工的编号、名字、工作、工资及所在部门编号等信息
表结构如下:
查询工资最高的员工的信息
SELECT * FROM emp WHERE sal = (SELECT max(sal) FROM emp); // 此时子查询是嵌套在WHERE后面的。
查询部门编号为30的员工的姓名和员工编号
SELECT e.empno, e.ename FROM (SELECT * FROM emp WHERE deptno = 30)e; //此时子查询是嵌入在FROM后面的,当时此处也可以使用where条件来实现 相同效果。
查询工资大于39部门所有员工工资的员工信息
SELECT * FROM emp WHERE sal > ALL (SELECT sal FROM emp WHERE deptno = 30);
查询工资大于任一经理工资的员工信息
SELECT * FROM emp WHERE sal > ANY (SELECT sal FROM emp WHERE job='经理');