专注Java教育14年 全国咨询/投诉热线:444-1124-454
星辉LOGO图
始于2009,口口相传的Java黄埔军校
首页 hot资讯 实例解析MySQL自连接查询

实例解析MySQL自连接查询

更新时间:2021-02-01 17:32:47 来源:星辉 浏览2219次

自连接是指使用表的别名实现表与其自身连接的查询方法。一般情况下,在MySQL数据库中很多问题的解决,需要我们进行多表查询,将两表中某些数据联结,来得到我们所需的数据。但有些情况下,我们需要对一张表内的数据,进行一些对比,或者是比较,获得各列层次关系,通过一般的SQL写法,可能需要通过写多个子查询的方式才能解决。但是用MySQL自连接查询可以轻松解决,所以通俗来理解的话,MySQL自连接查询就是以类似多表对比的方式,实现对同一张表内数据进行复杂的关系表示或关系处理。

我们可以结合实际例子来看,加深我们对MySQL自连接查询的理解。

示例1:

这是一张成绩表score

现在要查询001课程>= 002课程的学生的学号,这时就能用自连接查询。

SELECT a.学号,a.成绩 as score_001,b.成绩 as score_002

from score a ,score b

where a.学号=b.学号

and a.课程号 = 001

and b.课程号 = 002

and a.成绩>=b.成绩;

输出结果:

结果只有003号学生满足条件,符合上表信息。

或许单一的例子不足以说明什么,我们再来看一个MySQL自连接查询的例子:

示例2:

成绩表score2

使用SQL查询出所有至少连续3次出现的成绩

问题拆解:什么是连续3次出现。成绩表按学号顺序排列(如果不是,可以通过窗口函数排序等方式)所以每一个学号之间间隔都是1,a(004)=b(005)-1,b(005)=c(006)-1,abc3个学号就为连续学号。那么只要满足两个条件:

1.3个连续学号

2.对应成绩相等。

select a.成绩 as 答案

from score2 a,score2 b,score2 c

where a.学号 = b.学号-1

and b.学号 = c.学号-1

and a.成绩 = b.成绩

and b.成绩 = c.成绩;

输出结果:


        综合上面的两个例子,我们不难看出:自连接其实是一种特殊的内连接,它是指相互连接的表在物理上为同一张表,但可以在逻辑上分为两张表。也就是说在一个连接查询中,涉及到的两个表本质上其实是同一个表,但为了区别该表的每一次出现,需要为表定义一个别名,这种表连接自身别名的表的连接我们就称之为自连接查询。

Mysql自连接查询是MySQL中连接查询最主要的查询方式,主要包括内连接、外连接和交叉连接等。本文我们所讲的自连接查询也是其中的内连接的一种特殊方式,想要掌握各种MySQL连接查询,可以观看本站的MySQL教程,学习新的知识。

 

 

提交申请后,顾问老师会电话与您沟通安排学习

免费课程推荐 >>
技术文档推荐 >>