标签:select style 记录 comm div group by 表示 字段 多列
子查询:在一个查询的内部还包括另外一个查询,则此查询称为子查询,子查询的格式:
SELECT {DISTINCT} * | 查询列 1 别名 1,查询列 2 别名 2,… FROM 表名称 1 别名 1 , 表名称 2 别名 2 , ( SELECT {DISTINCT} * | 查询列 1 别名 1,查询列 2 别名 2,… FROM 表名称 1 别名 1 , 表名称 2 别名 2 ,… {WHERE 条件(s)} {GROUP BY 分组条件 {HAVING 分组条件}} {ORDER BY 排序字段 ASC|DESC , 排序字段 ACS | DESC ,…} ) 别名, … {WHERE 条件(s) ( SELECT {DISTINCT} * | 查询列 1 别名 1,查询列 2 别名 2,… FROM 表名称 1 别名 1 , 表名称 2 别名 2 ,… {WHERE 条件(s)} {GROUP BY 分组条件 {HAVING 分组条件}} {ORDER BY 排序字段 ASC|DESC , 排序字段 ACS | DESC ,…} ) } {GROUP BY 分组条件 {HAVING 分组条件}} {ORDER BY 排序字段 ASC|DESC , 排序字段 ACS | DESC ,…}
范例:要求查询出比 7654 工资要高的全部雇员的信息
SELECT sal FROM emp WHERE empno=7654 ;
SELECT * FROM emp WHERE sal>(SELECT sal FROM emp WHERE empno=7654) ;
所有的子查询必须在“()”中编写代码。
子查询在操作中有分为以下三类:
在子查询中,存在以下三种查询的操作符号:
IN 操作符,指定一个查询的范围
范例:求出每个部门的最低工资的雇员信息
SELECT * FROM emp WHERE sal IN (SELECT MIN(sal) FROM emp GROUP BY deptno) ;
ANY 操作:
SELECT * FROM emp WHERE sal =ANY (SELECT MIN(sal) FROM emp GROUP BY deptno) ;
SELECT * FROM emp WHERE sal >ANY (SELECT MIN(sal) FROM emp GROUP BY deptno) ;
SELECT * FROM emp WHERE sal <ANY (SELECT MIN(sal) FROM emp GROUP BY deptno) ;
ALL 操作:
SELECT * FROM emp WHERE sal >ALL (SELECT MIN(sal) FROM emp GROUP BY deptno) ;
SELECT * FROM emp WHERE sal <ALL (SELECT MIN(sal) FROM emp GROUP BY deptno) ;
对于子查询来讲,还可以进行多列子查询,一个子查询中同时返回多个查询的列。
SELECT * FROM emp WHERE (sal,NVL(comm,-1)) IN ( SELECT sal,NVL(comm,-1) FROM emp WHERE deptno=20) ;
标签:select style 记录 comm div group by 表示 字段 多列
原文地址:http://www.cnblogs.com/aaron911/p/7764724.html