MySQL子查询
含义:
出现在其他语句中的select语句,称为子查询或内查询
外部的查询语句,称为主查询或外查询
分类:
1.按子查询出现的位置:
select后面:仅仅支持标量子查询
from后面 : 支持表子查询
*where或having后面:*标量子查询(单行)
*列子查询(多行)
行子查询
exists后面(相关子查询) 表子查询
2.按结果集的行列数不同:
标量子查询 ( 结果集只有一行一列 )
列子查询 ( 结果集只有一列多行 )
行子查询 ( 结果集有一行多列 )
表子查询 ( 结果集一般为多行多列 )
3.where或having后面:
1.标量子查询(单行子查询)
2.列子查询(多行子查询)
3.行子查询(多行多列)
特点:
①子查询都放在小括号内
②子查询可以放在条件的右侧
③标量子查询,一般搭配单行操作符使用 ( > < >= <= = < > )
列子查询,一般搭配着多行操作符使用 ( in、any/some、all、not in )
④子查询的执行优先于主查询执行,主查询的条件使用了子查询的执行结果