##子查询
括号内的查询叫做子查询,也叫内部查询,先于主查询执行。
子查询的结果被主查询(外部查询)使用 Expr operator包括比较运算符。
-
-
- 单行运算符:>、=、>=、<、<>、<=
- 多行运算符: IN、ANY、ALL
-
子查询可以嵌于以下SQL子句中:
-
- WHERE子句
- HAVING子句
- FROM子句
子查询使用指导
-
-
- 子查询要用扩号扩起来
- 将子查询放在比较运算符的右边
- 在子查询中的ORDER BY 子句不需要,除非你正在执行Top-N分析
- 对于单行子查询要使用单行运算符
- 对于多行子查询要使用多行运算符
-
#子查询类型
#单行子查询
单行子查询
-
- 子查询只返回一行一列
- 使用单行运算符
-
- 子查询中使用组函数
查询工资最低的员工姓名,岗位及工资
-
- HAVING子句中使用子查询
查询部门最低工资比20部门最低工资高的部门编号及最低工资
#多行子查询
多行子查询,子查询返回记录的条数可以是一条或多条。
多行子查询需要使用多行操作符。
常用的多行操作符包括:
-
- IN
- ANY
- ALL
IN操作符和以前介绍的功能一致,判断是否与子查询的任意一个返回值相同。返回的结果可以是一条或多条。
#IN
#ANY:表示任意的。
< ANY 比子查询返回的任意一个结果小即可,即小于返回结果的最大值。
= ANY 和子查询中任意一个结果相等即可,相当于IN。
> ANY比子查询返回的任意一个结果大即可,即大于返回结果的最小值。
#ALL:表示所有的。
< ALL 比子查询返回的所有的结果都小,即小于返回结果的最小值。
> ALL比子查询返回的所有的结果都大,即大于返回结果的最大值。
= ALL 无意义,逻辑上也不成立。
##多列子查询
到目前为止您已经能完成单行和多行子查询,但是都是只有一个列在SELECT语句的WHERE或HAVING子句中进行比较。
如果想多个列进行比较呢,您必须使用逻辑运算符编写一个复合WHERE子句。
多列子查询可以让您将WHERE子句中多个条件合并成一个
多列比较
原文地址:https://www.cnblogs.com/destinywxy/p/9329414.html