子查询:相关子查询,不相关子查询
-- 不相关子查询
-- 一条SQL语句含有多个select,先执行子查询,在执行外部查询。子查询可以独立运行,成为不相关子查询。
-- 需求1:查询所有比姓名为“CLARK”工资高的员工的信息。
-- 1.先查询出姓名为CLARK的工资信息
SELECT * FROM emp;
SELECT SAL FROM emp WHERE ENAME='CLARKE';
-- 2.在查询比当前工资高的员工
SELECT * FROM emp WHERE SAL>(SELECT SAL FROM emp WHERE ENAME='CLARKE');
-- 需求2:查询所有和姓名为“AAA”工资相等的员工信息
-- 1.先查询姓名为AAA的员工薪资
SELECT SAL FROM emp WHERE ENAME="AAA";
-- 2.在查询薪资和AAA相等的员工
SELECT * FROM emp WHERE SAL=(SELECT SAL FROM emp WHERE ENAME="AAA");
-- 需求:3:查询工资低于任意一个岗位为“CLERK”的工资雇员信息
-- 查询岗位为CLERK的所有薪资
SELECT * FROM emp;
SELECT SAL FROM emp WHERE JOB="CLERK";
-- 小于任意一个工资,相当于小于最高工资
SELECT * FROM emp WHERE SAL<ANY(SELECT SAL FROM emp WHERE JOB="CLERK");
-- 小于所有工资,相当于小于最低工资,
SELECT * FROM emp where sal <all(SELECT SAL FROM emp WHERE JOB="CLERK");
SELECT * FROM emp where sal <(SELECT MIN(SAL) FROM emp WHERE JOB="CLERK");
-- 工资等于其中任何一个,工资等于800 or 300 or 1100 or 950 or 1300
SELECT * FROM emp where sal in (SELECT SAL FROM emp WHERE JOB="CLERK");