MySQL 如何在一个查询中合并两个表

MySQL 如何在一个查询中合并两个表

MySQL作为开源的关系型数据库管理系统,逐渐成为了Web应用系统的首选,如何使用MySQL对于广大开发者来说都是一个必备技能。今天我们来看一下MySQL中如何在一个查询中合并两个表。

阅读更多:MySQL 教程

什么是合并两个表?

在MySQL中,合并两个表可以理解为对两个表进行连接操作,生成新的结果集。合并操作在查询中非常常见,经常用到的联接有:内连接、左连接、右连接、全连接等。

假设我们有两个表,一个是“students”,一个是“scores”,如下所示:

students表

id name age
1 Tom 18
2 Jack 19
3 Lily 20

scores表:

id subject score
1 Math 80
2 English 90
3 Chinese 85

我们可以使用以下SQL语句将两个表进行合并:

内连接

内连接(INNER JOIN)是连接操作中最常用的一种,表示只连接两张表中相互匹配的部分。

例如,我们可以使用以下SQL语句将“students”表和“scores”表进行连接:

SELECT * FROM students INNER JOIN scores ON students.id = scores.id;
Mysql

执行以上SQL语句后,生成的结果集如下:

id name age id subject score
1 Tom 18 1 Math 80
2 Jack 19 2 English 90
3 Lily 20 3 Chinese 85

我们可以看到,生成的结果集包含两张表中id列匹配的部分,并将这些匹配的行连接起来。此时,生成的结果集中包含了两张表中匹配的行,而不包含不匹配的行。

左连接

左连接(LEFT JOIN)将两张表中的所有数据都保留下来,并且将匹配的数据连接到一起,对于左表中没有匹配上的数据,用NULL值填充。在使用左连接时,首先指定要连接的表,然后在关键字LEFT JOIN之后指定要连接的表.

例如,我们可以使用以下SQL语句在“students”表中查找每个学生的分数,包括那些没有分数的学生:

SELECT * FROM students LEFT JOIN scores ON students.id = scores.id;
Mysql

执行以上SQL语句后,生成的结果集如下:

id name age id subject score
1 Tom 18 1 Math 80
2 Jack 19 2 English 90
3 Lily 20 3 |Chinese 85
4 Lucy 21 NULL NULL NULL

我们可以看到,由于“scores”表中没有Lucy的信息,左连接操作保留了“students”表中Lucy的信息,并用NULL值填充了“scores”中对应部分。

右连接

右连接(RIGHT JOIN)和左连接操作类似,只不过右连接会保留右表中没有匹配到的部分。在使用右连接时,首先指定要右连接的表,然后在关键字RIGHT JOIN之后指定要连接的表。

例如,我们可以使用以下SQL语句在“scores”表中查找成绩,并列出所有的科目,包括没有学生的科目:

SELECT * FROM students RIGHTJOIN scores ON students.id = scores.id;
Mysql

执行以上SQL语句后,生成的结果集如下:

id name age id subject score
1 Tom 18 1 Math 80
2 Jack 19 2 English 90
3 Lily 20 3 |Chinese 85
NULL NULL NULL 4 Biology 70

我们可以看到,由于“students”表中没有Biology这门科目的信息,右连接操作保留了“scores”表中Biology这门科目的信息,并用NULL值填充了“students”中对应部分。

全连接

全连接(FULL OUTER JOIN)操作会保留左表和右表中所有的数据,并将匹配的数据连接在一起。在使用全连接时,首先指定要连接的表,然后在关键字FULL OUTER JOIN之后指定要连接的表。

例如,我们可以使用以下SQL语句将“students”表和“scores”表进行全连接:

SELECT * FROM students FULL OUTER JOIN scores ON students.id = scores.id;
Mysql

执行以上SQL语句后,生成的结果集如下:

id name age id subject score
1 Tom 18 1 Math 80
2 Jack 19 2 English 90
3 Lily 20 3 |Chinese 85
4 Lucy 21 NULL NULL NULL
NULL NULL NULL 4 Biology 70

我们可以看到,全连接操作保留了“students”表和“scores”表中所有的信息,并将匹配的信息连接在一起。对于没有匹配的部分,会用NULL值填充。

总结

在MySQL中,合并两个表可以理解为连接操作,主要包括内连接、左连接、右连接、全连接等。其中内连接是最常用的连接操作,表示只连接两张表中相互匹配的部分;左连接和右连接分别将两张表中的所有数据都保留下来,并将匹配的数据连接到一起;全连接保留了左表和右表中所有的数据,并将匹配的数据连接在一起。在实际工作中,需要根据具体需求选择不同类型的连接操作,来进行高度灵活的数据处理。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

登录

注册