文章目录
子查询(嵌套
查询)1. 标准
子查询2. 列
子查询(多行
子查询)3. 行
子查询select后面的
子查询from后面的
子查询exists后面(相关
子查询)
子查询(嵌套
查询)
出现在其他语句中的select语句被称为
子查询
按位置分类:
select后面
from后面
where或having后面
exists后面
按结果级的行数不同分类:
标量
子查询 (结果集有一行一列)
列
子查询 (结果集只有一列多行)
行
子查询 (结果集只有一行多列)
表
子查询 (结果集一般为多行多列)
MySQL执行带有子查询的语句时,会先执行子查询,然后将子查询的结果作为外部查询的条件或数据来源。具体执行顺序如下:
1. FROM子句:按照表之间的连接关系形成虚拟的表。
2. WHERE子句:按照指定条件筛选行。
3. GROUP BY子句:按照指定的列对结果进行分组。
4. HAVING子句:按照指定条件筛选分组。
5. SELECT子句:选择要查询的列。
6. DISTINCT关键字:去除重复行。
7. ORDER BY子句:按照指定的列对结果进行排序。
8. LIMIT子句:限制查询结果的行数。
在执行包含子查询的语句时,MySQL会先执行子查询,得到子查询的结果集,然后将该结果集作为外查询的条件或数据来源,再执行外查询。外查询的执行顺序与普通查询相同。
需要注意的是,子查询的执行顺序也遵循以上的规则,即先执行子查询的FROM子句、WHERE子句、GROUP BY子句、HAVING子句、SELECT子句、DISTINCT关键字、ORDER BY子句和LIMIT子句。