當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


MySQL INNER JOIN用法及代碼示例


MySQL 的 INNER JOIN 子句從兩個表中檢索具有公共匹配列值的行。

用法

SELECT column_name(s)
FROM table1
INNER JOIN table2
ON table1.column = table2.column;

例子

考慮下表有關一些學生的信息:

student_id

名稱

名字

day_enrolled

年齡

用戶名

1

Sky

Towner

2015-12-03

17

stowner1

2

Ben

Davis

2016-04-20

19

bdavis2

3

Travis

Apple

2018-08-14

18

tapple3

4

Arthur

David

2016-04-01

16

adavid4

5

Benjamin

Town

2014-01-01

17

btown5

可以使用此處的代碼創建上述示例表。

另請考慮下表有關學生的課外活動:

student_id

俱樂部

date_entered

1

Football

2016-02-13

2

Boxing

2016-05-25

3

Apple

2018-08-17

4

Fishing

2017-01-01

5

NULL

NULL

可以使用此處的代碼創建上述示例表。

基本用法

要使用公共列 student_id 檢索有關學生及其課外活動的信息:

SELECT fname, lname, age, club
FROM students
INNER JOIN extracurricular
ON students.student_id = extracurricular.student_id;



+----------+--------+------+----------+
| fname    | lname  | age  | club     |
+----------+--------+------+----------+
| Sky      | Towner |   17 | Football |
| Ben      | Davis  |   19 | Boxing   |
| Travis   | Apple  |   18 | Chess    |
| Arthur   | David  |   16 | Fishing  |
| Benjamin | Town   |   17 | NULL     |
+----------+--------+------+----------+

這裏,當兩個表中的student_id值匹配時,我們從students表中返回fnamelnameage信息,並從extracurricular表中返回相應的club信息。

使用別名,上述查詢可以縮短為:

SELECT fname, lname, age, club
FROM students s
INNER JOIN extracurricular e
ON s.student_id = e.student_id;

不明確的列名

student_id 列出現在studentsextracurricular 表中。在這種情況下,如果我們不指定我們引用的是哪個表的student_id列,則混亂的MySQL服務器將拋出錯誤:

SELECT student_id, fname, lname, age, club
FROM students
INNER JOIN extracurricular
ON students.student_id = extracurricular.student_id;



ERROR 1052 (23000): Column 'student_id' in field list is ambiguous

如果我們想從 extracurricular 檢索 student_id,指定上述內容的正確方法是:

SELECT extracurricular.student_id, fname, lname, age, club
FROM students
INNER JOIN extracurricular
ON students.student_id = extracurricular.student_id;



+------------+----------+--------+------+----------+
| student_id | fname    | lname  | age  | club     |
+------------+----------+--------+------+----------+
|          1 | Sky      | Towner |   17 | Football |
|          2 | Ben      | Davis  |   19 | Boxing   |
|          3 | Travis   | Apple  |   18 | Chess    |
|          4 | Arthur   | David  |   16 | Fishing  |
|          5 | Benjamin | Town   |   17 | NULL     |
+------------+----------+--------+------+----------+

使用別名可以將上麵的內容進一步縮短為:

SELECT e.student_id, fname, lname, age, club
FROM students s
INNER JOIN extracurricular e
ON s.student_id = e.student_id;

我們提供帶有別名 sstudents 表和帶有別名 eextracurricular 表。這允許我們在查詢的其他地方使用提供的別名來引用這些表。

相關用法


注:本文由純淨天空篩選整理自Arthur Yanagisawa大神的英文原創作品 MySQL | INNER JOIN。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。