mysql学习之路_联合查询与子查询

导读:本篇文章讲解 mysql学习之路_联合查询与子查询,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

联合查询

联合查询:将多次查询(多条select语句)在记录上进行拼接(字段不会增加)。

语法:多条select语句构成,每条select语句获取的字段必须严格一致(但是字段类型无关)。

Select 语句1

Union [union选项]

Select语句2……..

Union 选项有两个

  All:保留所有

  Distinct:去重。默认的

联合查询只要求字段一样,与数据类型无关。

意义:两种

1,查询一张表但是需求不同。

2,多表查询,多张表的结构完全一样,保存的数据也一样

Order by

使联合查询中order by 不能直接使用需要对查询语句使用括号。

例:

(select * from my-class where sex=’男’ order by age asc limit 999)

Union

(select * from my-class where sex=’女’ order by age desc limit 999);

若要order by生效,必须搭配limit ,limit最大值。

 

 子查询

子查询:subquery 查询是在某个查询结果之上进行的(一条select语句含另一条select语句)

子查询分为两种:按位置分,按结果分

按位置分类:子查询select语句在外部查询

  Select语句出现的位置

  Form子查询:子查询跟在form后面。

Where 子查询:子查询出现在where条件中

  Exists子查询:子查询出现在exists里面

按结果分类:根据子查询得到的数据进行分类(理论上讲任何一个查询得到的结构都可以理解为二维表)

  标量查询:子查询得到的结果是一行一列

列子查询:子查询得到的结果是一行多列

行子查询:子查询得到的结果是一行多列(多行多列)

表子查询:子查询得到的结果是多行多列(出现位置在form之后)

标量子查询

例:需求:知道名字php获取学生

Select *from my_class where c_id =(select id from my_student where c_name=php);

列子查询

例:需求查询所有在读班级的学生(班级表存在的班级)

1,确定数据源:学生

Select * from my_sutdent where c_id in (?)

2,确定有效班级id,所有班级id

Select id from my_class;

合:Select * from my_sutdent where c_id in (Select id from my_class);

列子查询返回的结果比较:一行多列,需要使用in作为条件匹配,其实mysql还有几个类似:all ,some,any===in;

行子查询:

行子查询返回的结果可以是多行多列(一行多列)、

例:需求:要求查询整个学生中年龄最大,身高最高的学生

1,确定数据源

Select *from my_student where age =? and heigth=?;

2,确定最大的年龄和最高的身高

Select max(age),max(height) from my_student;

行子查询:需要构造行元素,行元素多个字段构成

Select * from my_student where (age,height)=(select max(age),max (height)from my_student);

表子查询:

 表子查询:子查询返回的结果是多行多列的二维表,子查询的结果当做二维表来使用

例:需求:找出每班最后一个的学生

1,确定数据源;先将学生安装身高进行降序或者是升序

Select *from my_student order by height desc ;

2,从每个班选出第一个学生

Select * from my_student group by c_id;

表子查询:from子查询得到的结果作为from的数据源。

Exists 子查询

Exists 是否存在,exists子查询就是用来判断某些条件是否满足(跨表)exists是接在where之后,exists返回的结果只有0和1

例:查询所有的学生,前提条件是班级存在

1,确定数据源

Select *form my_student where?

2,确定条件是否满足

Exists (select * from my_class)–是否成立

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之家整理,本文链接:https://www.bmabk.com/index.php/post/13123.html

(0)
小半的头像小半

相关推荐

极客之家——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!