掌握 INNER JOIN 的眉角

在 SQL 中進行資料連接

Maham Faisal Khan

Senior Content Developer, DataCamp

掌握 INNER JOIN 的眉角

一個圖示,顯示左右兩個資料表。左右表中相同的 id 以相同顏色標示。

在 SQL 中進行資料連接

掌握 INNER JOIN 的眉角

  • INNER JOIN 會在兩個資料表中,找出在指定欄位上相符的紀錄。
id 欄位進行 INNER JOIN 的示意圖

一個圖示,顯示 left_table 與 right_table。左右表中相同的 id 以相同顏色標示,並以箭頭連結。

在 SQL 中進行資料連接

掌握 INNER JOIN 的眉角

id 欄位進行 INNER JOIN 的示意圖

一個圖示,顯示 left_table 與 right_table。左右表中相同的 id 以相同顏色標示並以箭頭連結;對 `INNER JOIN` 不相關的紀錄已淡化。

在 SQL 中進行資料連接

掌握 INNER JOIN 的眉角

id 欄位進行 INNER JOIN 的示意圖

一個圖示,顯示 left_table 與 right_table。右側為連接結果,只回傳兩表在 id 欄位相符的紀錄。

在 SQL 中進行資料連接

leadership 資料庫綱要

截至 2024 年的世界領袖: 一個 SQL 結構圖,顯示 leadership 資料庫中的三個資料表:presidents、prime_ministers 與 prime_minister_terms。presidents 與 prime_minister 可在 country 欄位連接;prime_ministers 與 prime_minister_terms 可在 prime_minister 欄位連接。

在 SQL 中進行資料連接

presidents 資料表

SELECT * 
FROM presidents;
| country  | continent     | president               |
|----------|---------------|-------------------------|
| Egypt    | Africa        | Abdel Fattah el-Sisi    |
| Portugal | Europe        | Marcelo Rebelo de Sousa | 
| USA      | North America | Joe Biden               |
| Uruguay  | South America | Luis Lacalle Pou        |
| Pakistan | Asia          | Asif Ali Zardari        |
| Chile    | South America | Gabriel Boric           |
| India    | Asia          | Droupadi Murmu          |
在 SQL 中進行資料連接

認識 prime ministers

prime_ministers 資料表

leadership 資料庫中的 prime_ministers 資料表,包含三欄:country、continent、prime_minister。

在 SQL 中進行資料連接

prime ministers,來認識 presidents 吧

presidents 資料表

並列顯示兩個資料表:presidents 與 prime_minister。兩表中對應的欄位以顏色標示。

prime_ministers 資料表

並列顯示兩個資料表:presidents 與 prime_minister。兩表中對應的欄位以顏色標示。

在 SQL 中進行資料連接

第一個 INNER JOIN

--Inner join of presidents and prime_ministers, joining on country

SELECT prime_ministers.country, prime_ministers.continent, prime_minister, president
FROM presidents
INNER JOIN prime_ministers
ON presidents.country = prime_ministers.country;

注意。 當兩個資料表都含有同名欄位時,選取欄位需使用 table.column_name 格式,才能避免 SQL 錯誤。

| country        | continent | prime_minister   | president               |
|----------------|-----------|------------------|-------------------------|
| Egypt          | Africa    | Mostafa Madbouly | Abdel Fattah el-Sisi    |
| Portugal       | Europe    | Luís Montenegro  | Marcelo Rebelo de Sousa |
| Pakistan       | Asia      | Shehbaz Sharif   | Asif Ali Zardari        |
| India          | Asia      | Narendra Modi    | Ram Nath Kovind         |
在 SQL 中進行資料連接

資料表別名(Aliasing)

--Inner join of presidents and prime_ministers, joining on country

SELECT p2.country, p2.continent, prime_minister, president
FROM presidents AS p1 INNER JOIN prime_ministers AS p2
ON p1.country = p2.country;
| country        | continent | prime_minister   | president               |
|----------------|-----------|------------------|-------------------------|
| Egypt          | Africa    | Mostafa Madbouly | Abdel Fattah el-Sisi    |
| Portugal       | Europe    | Luís Montenegro  | Marcelo Rebelo de Sousa |
| Pakistan       | Asia      | Shehbaz Sharif   | Asif Ali Zardari        |
| India          | Asia      | Narendra Modi    | Ram Nath Kovind         |

SELECTON 子句的 table.column_name 語法中,你也可以使用別名。

在 SQL 中進行資料連接

使用 USING

--Inner join of presidents and prime_ministers, joining on country
SELECT p2.country, p2.continent, prime_minister, president
FROM presidents AS p1
INNER JOIN prime_ministers AS p2
USING(country);
| country        | continent | prime_minister   | president               |
|----------------|-----------|------------------|-------------------------|
| Egypt          | Africa    | Mostafa Madbouly | Abdel Fattah el-Sisi    |
| Portugal       | Europe    | Luís Montenegro  | Marcelo Rebelo de Sousa |
| Pakistan       | Asia      | Shehbaz Sharif   | Asif Ali Zardari        |
| India          | Asia      | Narendra Modi    | Ram Nath Kovind         |
在 SQL 中進行資料連接

一起來練習吧!

在 SQL 中進行資料連接

Preparing Video For Download...