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….

  1. 前段為一般的 SELECT 語法,顯示 table1 的資訊。
  2. JOIN table2 的意思是:要在顯示 table1 資訊的同事,把 table2 的資料也一起融入並顯示出來。等一下會介紹 join 的三種方式。
  3. 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



留言

這個網誌中的熱門文章

Android 筆記:在Android Studio上製作分頁效果(FragmentTabHost 使用方法)

Debian, Parallels desktop 筆記:如何建立自己的 Shared Folder / Debian and PD(Parallels Desktop) notes: How to create your own shared folder in the Linux VM in Parallels Desktop