子查询
在整个SQL查询语句的过程之中,子查询并不是具备特殊的语法,也就是说在整个SQL查询操作里面子句:SELECT、FROM、WHERE、GROUP BY、HAVING、ORDER BY.如果非要给出子查询的语法,那么只能进行拼凑了。
所有可能出现的子查询都需要使用“()”声明。
子查询语法(实际上是查询嵌套)
SELECT [DISTINCT] * | 字段 [别名] | 统计函数, (
SELECT [DISTINCT] * | 字段 [别名] | 统计函数,
FROM 表 [别名], 表 [别名],…
[WHERE 条件(s)]
[GROUP BY 分组字段,分组字段,…]
[HAVING 分组过滤]
[ORDER BY 排序 []ASC | DESC], 排序 [ASE | DESC],…]
)
FROM 表 [别名], 表 [别名],…(
SELECT [DISTINCT] * | 字段 [别名] | 统计函数,
FROM 表 [别名], 表 [别名],…
[WHERE 条件(s)]
[GROUP BY 分组字段,分组字段,…]
[HAVING 分组过滤]
[ORDER BY 排序 []ASC | DESC], 排序 [ASE | DESC],…]
)
[WHERE 条件(s)](
SELECT [DISTINCT] * | 字段 [别名] | 统计函数,
FROM 表 [别名], 表 [别名],…
[WHERE 条件(s)]
[GROUP BY 分组字段,分组字段,…]
[HAVING 分组过滤]
[ORDER BY 排序 []ASC | DESC], 排序 [ASE | DESC],…]
)
[GROUP BY 分组字段,分组字段,…]
[HAVING 分组过滤](
SELECT [DISTINCT] * | 字段 [别名] | 统计函数,
FROM 表 [别名], 表 [别名],…
[WHERE 条件(s)]
[GROUP BY 分组字段,分组字段,…]
[HAVING 分组过滤]
[ORDER BY 排序 []ASC | DESC], 排序 [ASE | DESC],…]
)
[ORDER BY 排序 []ASC | DESC], 排序 [ASE | DESC],…]
查询子句的任意位置上都可以随意出现子查询,出现子查询最多的位置:WHERE、FROM 、HAVING参考使用方案
- WHERE子句:子查询返回单行单列、单行多列、多行单列;
- HAVING子句:子查询返回单行单列,而且要使用统计函数过滤;
- FROM 子句:子查询返回的是多行多列;
- SELECT子句:一般返回单行单列,而且需要某些查询的时候使用;
1.在WHERE子句中使用子查询
WHERE子句主要是进行数据的筛选,通过分析发现,单行单列、多行单列、单行多列都可以在WHERE子句中出现。
1.子查询返回单行单列
范例:要求查询出公司工资最低的雇员信息