文章目录
前言
子查询指的是一个查询语句嵌套在另一个查询语句内部的查询。 SQL中子查询的使用大大增强了SELECT 查询的能力,因为很多时候查询需要从结果集中获取数据,或者需要从同一个表中先计算得出一个数据结果,然后与这个数据结果(可能是某个标量,也可能是某个集合)进行比较。提示:以下是本篇文章正文内容,下面案例可供参考
1 子查询介绍
1.1 子查询的基本使用
- 子查询(内查询)在主查询之前一次执行完成。
- 子查询的结果被主查询(外查询)使用。
- 注意事项:
- 子查询要包含在括号内
- 将子查询放在比较条件的右侧
- 单行操作符对于单行子查询,多行操作符对应多行子查询
1.2 子查询的分类
2 单行子查询
2.1单行比较操作符
2.2 代码示例
2.3 HAVING 中的子查询
2.4 CASE 中的子查询
2.5 子查询中的空值问题
2.6 非法使用子查询
3 多行子查询
- 也称为集合比较子查询
- 内查询返回多行
- 使用多行比较操作符
3.1 多行比较操作符
3.2 代码示例
3.3 空值问题
4 相关子查询
- 如果子查询的执行依赖于外部查询,通常情况下都是因为子查询中的表用到了外部的表,并进行了条件关联,因此每执行一次外部查询,子查询都需要重新计算一次,这样的子查询就橙称之为关联子查询。
- 相关子查询按照一行接一行的顺序执行,主查询的每一行都执行一次子查询。
4.1 相关子查询执行流程
4.2 代码示例
4.3 EXIST 与 NOT EXIST 关键字
- 关联子查询通常也会和EXIST操作符一起来使用,用来检查在子查询中是否存在满足条件的行。
- 如果在子查询中不存在满足条件的行:
- 条件返回FALSE
- 继续在子查询中查找
- 如果在子查询中满足条件的行:
- 不在子查询中继续查找
- 条件返回TRUE
- NOT EXIST 关键字表示如果不存在某种条件,则返回TRUE,否则返回FALSE。