在 MySQL 中連線 3 個表

Preet Sanghavi 2023年1月3日
在 MySQL 中連線 3 個表

在本教程中,我們將學習如何在 MySQL 中連線三個表。

企業和組織可能必須基於所有三個表共有的特定匹配列同時視覺化三個表。在連線的幫助下,這個操作在 MySQL 中是允許的。

我們可以根據我們的要求從不同的表中獲取列,並根據所有共同的特定列連線表。例如,我們有三個名為 table_1table_2table_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_idstu_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
注意
在輸出塊中,我們有別名 NameEmailMarks 以及 MySQL 中的 AS 關鍵字,以增加程式的可讀性。

因此,藉助 WHEREON 子句,我們可以有效地連線三個不同的表,並根據 MySQL 中的常見條件將它們的列視覺化為一個。

作者: Preet Sanghavi
Preet Sanghavi avatar Preet Sanghavi avatar

Preet writes his thoughts about programming in a simplified manner to help others learn better. With thorough research, his articles offer descriptive and easy to understand solutions.

LinkedIn GitHub

相關文章 - MySQL Join