MySQL 筆記:Join 合併表格,使用方式
Join 語法一共有三種,分別是 inner join、left join、right join。
先來簡述一下 Join 的用法。
SELECT * FROM table1 (LEFT/RIGHT) JOIN table2 ON table1.somecolum = table2.somecolum (and/or) condition2….
- 前段為一般的 SELECT 語法,顯示 table1 的資訊。
- JOIN table2 的意思是:要在顯示 table1 資訊的同事,把 table2 的資料也一起融入並顯示出來。等一下會介紹 join 的三種方式。
- ON 之後為 JOIN 的條件。
- JOIN:
- 也就是 INNER JOIN,該 JOIN 的用法是,只會顯示出符合 ON 條件的資料。也就是兩 table (table1 and table2) ,交集的資料。
- 舉例:
- 若 A 表格有三筆資料分別是 a_id 為 1,2,3。
- 若 B 表格有兩筆資料分別是 b_id 為 1,2,4。
- SELECT * FROM A JOIN B ON A.a_id = B.b_id;
- 在執行 JOIN 合併表格之後顯示的資料會是以下。
- 因為合併列印的關係,兩個表格的所有資料被合併成一個表格列印出來。
- 而因為是 INNER JOIN 的關係,所以只印出兩表格符合條間的交集資料。
a_id
|
b_id
|
1 |
1
|
2
|
2
|
- LEFT JOIN:
- 該 JOIN 的用法是,除了顯示符合 ON 條件的資料外,還會顯示 table1 (FROM 後方所接的 table) 的所有資料。
- 舉例:
- 延續上方 INNER JOIN 時的 A, B 表格。
- SELECT * FROM A LEFT JOIN B ON A.a_id = B.b_id;
- 執行結果如下。
- 可看出 A 表格的資料儘管在 a_id = 3 時找不到符合 a_id = b_id 的對象,但是該筆資料仍然被顯示出來,但對應的 b_id 因為沒有符合條件的對象而保留為 NULL。
a_id
|
b_id
|
1
|
1
|
2
|
2
|
3
| NULL |
- RIGHT JOIN:
- 該 JOIN 用法是,除了顯示符合 ON 條件的資料外,還會顯示 table2 (JOIN 後方所接的 table) 的所有資料。
- 舉例:
- 延續方才的 A, B 表格。
- SELECT * FROM A RIGHT JOIN B ON A.a_id = B.b_id;
- 執行結果如下。
- 可看出 B 表格的資料儘管在 b_id = 4 時找不到符合 a_id = b_id 的對象,但是該筆資料仍然被顯示出來,但對應的 a_id 因為沒有符合條件的對象而保留為 NULL。
a_id
|
b_id
|
1
|
1
|
2
|
2
|
NULL
|
4
|
留言
張貼留言