版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/zyddj123/article/details/84891771
本文详解mysql中的子查询:
子查询分为
where
子查询和from
子查询。
where
子查询包括标量子查询、列子查询、行子查询、exists
子查询
from
子查询包括表子查询
1.标量子查询
概念:子查询得到结果是一个数据 (一行一列)
语法:select * from 数据源 where 条件判断 =/<> (select 字段名 from 数据源 where 条件判断);
2.列子查询
概念: 子查询得到的结果是一列数据(一列多行)
语法: 主查询 where 条件 in (列子查询);
3.行子查询
概念: 子查询返回的结果是一行多列
行元素:字段元素是指一个字段对应的值,行元素对应的就是多个字段,多个字段合起来作为一个元素参与运算,这种情况成为行元素。
语法: 主查询 where 条件 [(构造一个行元素)] = (行子查询);
4.表子查询
概念: 子查询返回的结果是多行多列(也可能是一行一列),与行子查询相似,只是行子查询需要产生行元素而表子查询没有。
区分: 行子查询用于where
条件判断,属于where
子查询
表子查询用于from
数据源,属于from
子查询
语法: select 字段表 from (表子查询) as 别名 [where] [group by] [having] [order by] [limit];
5.exists子查询
概念: 子查询返回的结果只有0或者1(成立或者不成立)
语法: select * from 数据源 where exists(查询语句);
//根据查询得到的结果进行判断返回0,1