
回复
作者 | 川石信息
来源 | 今日头条
子查询
分治思想. 复杂的查询分解为若干个简单的查询
▲ 子查询的引入
1、子查询定义与分类
▲ 定义
子查询本质上就是一个select表达式(凡是能返回一个虚表的式子),可以嵌套在select语句的子句中,其返回的结果可以被select语句所用.
▲ 分类
根据其返回的行与列的个数不同分类:
○ 表子查询
其返回的结果是一个虚表.
○ 标量子查询
其返回的结果是一个值.
其他分类方式:
外层查询 内层查询
父查询 子查询
▲ 子查询的使用场合
2、select后的子查询
select子句后只能放置标量子查询,要求每次只能返回一个值.
语法:
3、from后的子查询
子查询返回的结果当做数据源来使用.
语法:
4、where后的子查询
○ 比较谓词中的子查询
▲ Subquery returns more than 1 row错误
原因: 子查询返回的行数>=2
规避: 让子查询返回的行数<=1
▲ limit子句
语法:
○ 集合成员谓词中的子查询
▲ not in陷阱
原因: not in后的集合中包含了null元素
规避: 去掉not in后集合中的null元素
○ 存在谓词中的子查询
▲ 关联子查询与非关联子查询