本文共 1350 字,大约阅读时间需要 4 分钟。
SELECT SELECT_LIST FROM TABLE WHERE EXPR OPERATOR (SELECT SELECT_LIST FROM TABLE);子查询(内查询)在主查询(外查询)之前执行。 主查询使用子查询结果。
在WHERE子句中使用多行子查询时,可以使用多行比较运算符(IN,ALL,ANY),将子查询的返回结果当做数值集合来使用。其中,ALL和ANY运算符必须与单行比较运算符(=,>,>=,<,<=,<>)结合使用。例如WHERE sal>ALL(子查询)。
1、IN:等于任何一个
2、ALL:和子查询返回的所有值比较。例如:sal>ALL(1,2,3)等价于sal>3,即大于所有。 3、ANY:和子查询返回的任意一个值比较。例如:sal>ANY(1,2,3)等价于sal>1,即大于任意一个就可以。 4、EXISTS:判断子查询是否有返回结果(不关心具体行数和内容),如果返回则为TRUE,否则为FALSE。(常用于相关子查询)--单行子查询--1.如何查得所有比“CLARK”工资高的员工的信息--普通查询SELECT ENAME, SAL FROM EMP WHERE ENAME = 'CLARK';SELECT * FROM EMP WHERE SAL > 2450;--子查询SELECT * FROM EMP WHERE SAL > (SELECT SAL FROM EMP WHERE ENAME = 'CLARK');--2.查询工资高于平均工资的雇员名字和工资SELECT ENAME, SAL FROM EMP WHERE SAL > (SELECT AVG(SAL) FROM EMP);--多行子查询--any:查询工资低于任何一个“CLERK”的工资的雇员信息。select *from empwhere sal < any( select sal from emp where job='CLERK');--all:查询工资比所有的“SALESMAN”都高的雇员的编号、名字和工资。select empno, ename, salfrom empwhere sal>all( select sal from emp where job='SALESMAN') --in:查询部门20中职务同部门10的雇员一样的雇员信息。select * from empwhere job in( select job from emp where deptno=10) and deptno=20;
转载地址:http://djcum.baihongyu.com/