LEFT 與 RIGHT JOIN

在 SQL 中進行資料連接

Maham Faisal Khan

Senior Content Developer, Data Science

INNER JOIN 示意圖

id 欄位上使用 INNER JOIN 的示意圖

從前一課重複的示意圖:顯示兩個資料表 left_table 與 right_table,及在兩表上執行 inner join 後的結果集。與 inner join 無關的紀錄已淡化處理。

在 SQL 中進行資料連接

LEFT JOIN 初始示意圖

  • LEFT JOIN 會回傳左表的所有紀錄,以及右表中在連接欄位上符合的紀錄。
    id 欄位上使用 LEFT JOIN 的示意圖

示意圖顯示兩個資料表 left table 與 right table,以箭頭指向兩表中 id 欄位相符的紀錄。與 left join 無關的紀錄已灰階處理。

在 SQL 中進行資料連接

LEFT JOIN 示意圖

id 欄位上使用 LEFT JOIN 的示意圖

示意圖顯示兩個資料表 left table 與 right table,以及在這些表上執行 left join 後的結果集。與 left join 無關的紀錄已淡化處理。

在 SQL 中進行資料連接

LEFT JOIN 語法

SELECT p1.country, prime_minister, president
FROM prime_ministers AS p1
LEFT JOIN presidents AS p2
USING(country);

Note. LEFT JOIN 也可以寫成 LEFT OUTER JOIN

| country        | prime_minister    | president               |
|----------------|-------------------|-------------------------|
| Egypt          | Mostafa Madbouly  | Abdel Fattah el-Sisi    |
| Portugal       | Luís Montenegro   | Marcelo Rebelo de Sousa |
| Pakistan       | Shehbaz Sharif    | Asif Ali Zardari        |
| United Kingdom | Keir Starmer      | null                    | 
| India          | Narendra Modi     | Droupadi Murmu          |
| Australia      | Anthony Albanese  | null                    | 
...
在 SQL 中進行資料連接

RIGHT JOIN

id 欄位上使用 RIGHT JOIN 的示意圖

示意圖顯示兩個資料表 left table 與 right table,以及在這些表上執行 right join 後的結果集。與 right join 無關的紀錄已灰階處理。

在 SQL 中進行資料連接

RIGHT JOIN 語法

SELECT *
FROM left_table
RIGHT JOIN right_table
ON left_table.id = right_table.id;

Note. RIGHT JOIN 也可以寫成 RIGHT OUTER JOIN

在 SQL 中進行資料連接

以總統與總理示範 RIGHT JOIN

SELECT p1.country, prime_minister, president
FROM prime_ministers AS p1
RIGHT JOIN presidents AS p2
USING(country);
| country        | prime_minister   | president               |
|----------------|------------------|-------------------------|
| Egypt          | Mostafa Madbouly | Abdel Fattah el-Sisi    |
| Portugal       | Luís Montenegro  | Marcelo Rebelo de Sousa |
| USA            | null             | Joe Biden               |
| Uruguay        | null             | Luis Lacalle Pou        |     
| Pakistan       | Shehbaz Sharif   | Asif Ali Zardari        |
| Chile          | null             | Gabriel Boric           |      
| India          | Narendra Modi    | Droupadi Murmu          |      
在 SQL 中進行資料連接

用 LEFT JOIN 還是 RIGHT JOIN?

  • RIGHT JOIN 的使用頻率低於 LEFT JOIN
  • 任何 RIGHT JOIN 都能改寫成 LEFT JOIN
  • 從左到右輸入時,LEFT JOIN 對使用者更直觀
在 SQL 中進行資料連接

一起來練習吧!

在 SQL 中進行資料連接

Preparing Video For Download...