Mysql 子查询

来源:互联网 发布:无心捏脸数据 编辑:程序博客网 时间:2024/06/10 10:33

子查询:subquery,一天查询语句在另外一条查询语句当中,那么该查询语句就是子查询。

 

一条select查询语句得到的结果可能有那些?

1.    一张表

2.    一行

3.    一个列

4.    一个字段

 

基于查询得到的结果,可以对子查询进行以下分类

 

1.    标量子查询:子查询返回的结果是一个字段单元

2.    列子查询:子查询返回的结果是一个字段,但是有多个值

3.    行子查询:子查询返回的结果是一行记录(一条记录:大于一个字段)

4.    表子查询:返回的结果是一个二维表(多行多列)

 

标量子查询

通常,标量子查询是用于作为整条查询语句条件部分中的比较运算

 

列子查询

In / union

列子查询也是用于主查询的查询条件

 

行子查询

也是用于主查询的条件判断

 

创建一个学生表和班级表

 

需求:要求查询找出年龄最大,同时身高最高的学生。

 

思路

 

两条子查询

1.    找出最大的年龄和最高的身高

2.    查询条件中比较最大的值

 

行子查询需要构造行元素,通过使用括号,将多个字段放到一起,形成“行“,再使用行与子查询得到的进行比较。

 

表子查询

用于作为数据源,出现在from之后

 

需求:获取每个班级中身高最高的一个学生

 

当一个子查询作为数据源的时候,必须要将该数据源命名成表的形式(一个名字),所以表子查询得到的结果必须使用别名

 

表子查询

 

通过子查询出现的位置,也可以对子查询进行分类

 

1.    From子查询:表子查询

2.    Where子查询:变量,,列子查询

3.    Exists子查询:用来判断查询条件,exists返回的结果是一个布尔值

Exists子查询适用于:主查询查询的结果非常大,但是又特别依赖某个条件(主查询要么获取全部要么一个都不要)

0 0
原创粉丝点击