在 MySQL 中连接 3 个表
在本教程中,我们将学习如何在 MySQL 中连接三个表。
企业和组织可能必须基于所有三个表共有的特定匹配列同时可视化三个表。在连接的帮助下,这个操作在 MySQL 中是允许的。
我们可以根据我们的要求从不同的表中获取列,并根据所有共同的特定列连接表。例如,我们有三个名为 table_1
、table_2
和 table_3
的表。
第一个表有名字,第二个有姓氏,最后一个有地址。每个表都有一个主 ID,可以使用公共主 ID MySQL 将这些表合并或可视化为一个表。
让我们了解这种方法是如何工作的。但在开始之前,我们必须通过创建一个表 student_details
以及几行来创建三个虚拟数据集。
-- create the table student_details
CREATE TABLE student_details(
stu_id int,
stu_firstName varchar(255) DEFAULT NULL,
stu_lastName varchar(255) DEFAULT NULL,
primary key(stu_id)
);
-- insert rows to the table student_details
INSERT INTO student_details(stu_id,stu_firstName,stu_lastName)
VALUES(1,"Preet","Sanghavi"),
(2,"Rich","John"),
(3,"Veron","Brow"),
(4,"Geo","Jos"),
(5,"Hash","Shah"),
(6,"Sachin","Parker"),
(7,"David","Miller");
要查看数据中的条目,我们使用以下代码。
SELECT * FROM student_details;
输出:
stu_id stu_firstName stu_lastName
1 Preet Sanghavi
2 Rich John
3 Veron Brow
4 Geo Jos
5 Hash Shah
6 Sachin Parker
7 David Miller
接下来,我们需要另一个名为 student_marks
的表,其中包含与 stu_id
对应的每个学生的分数。我们可以使用以下查询创建这样的表。
-- create the table student_details
CREATE TABLE student_marks(
stu_id int,
stu_marks int
);
-- insert rows to the table student_details
INSERT INTO student_marks(stu_id,stu_marks)
VALUES(1,10),
(2,20),
(3,30),
(4,7),
(5,9),
(6,35),
(7,15);
我们可以使用以下查询可视化该表。
SELECT * from student_marks;
输出:
stu_id stu_marks
1 10
2 20
3 30
4 7
5 9
6 35
7 15
最后,让我们创建一个名为 student_email
的第三个表。该表将拥有 stu_id
和 stu_email
列。stu_id
列对于所有三个表都是通用的,而 stu_email
列将代表正在考虑的学生的电子邮件地址。
我们可以在以下查询的帮助下创建第三个表。
-- CREATE TABLE student_email
CREATE TABLE student_email(
stu_id int,
stu_email varchar(255) DEFAULT NULL
);
-- insert rows to the table student_email
INSERT INTO student_email(stu_id,stu_email)
VALUES(1,"abc@d.in"),
(2,"SEAabc@d.in"),
(3,"DEabc@d.in"),
(4,"KARTabc@d.in"),
(5,"MARIOabc@d.in"),
(6,"SPETERabc@d.in"),
(7,"DAVIDabc@d.in");
我们可以使用以下查询可视化上面创建的 student_email
表。
SELECT * from student_email;
输出:
stu_id stu_email
1 abc@d.in
2 SEAabc@d.in
3 DEabc@d.in
4 KARTabc@d.in
5 MARIOabc@d.in
6 SPETERabc@d.in
7 DAVIDabc@d.in
让我们尝试在公共列 stu_id
的帮助下从上面创建的三个表中获取三个值,特别是学生的名字、分数和电子邮件地址。
在 MySQL 中连接 3 个表
要合并我们的三个表,我们可以使用公共列并借助以下查询从不同的表中获取不同的列。
select a.stu_firstName as "Name", b.stu_email as "Email", c.stu_marks as "Marks"
from student_details a, student_email b, student_marks c
where a.stu_id = b.stu_id and b.stu_id = c.stu_id
如上面的查询所示,我们正在根据共同的学生身份连接三个表。上面代码的输出如下。
Name Email Marks
Preet abc@d.in 10
Rich SEAabc@d.in 20
Veron DEabc@d.in 30
Geo KARTabc@d.in 7
Hash MARIOabc@d.in 9
Sachin SPETERabc@d.in 35
David DAVIDabc@d.in 15
Name
、Email
和 Marks
以及 MySQL 中的 AS
关键字,以增加程序的可读性。因此,借助 WHERE
和 ON
子句,我们可以有效地连接三个不同的表,并根据 MySQL 中的常见条件将它们的列可视化为一个。