标签: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