SQL JOIN是什麼?一次搞懂基本語法與常見類型

作者:帆軟行業化團隊

2025年7月03日 · 9 min read

來源:帆軟
sql join.webp
Image Source: unsplash

SQL JOIN是資料庫查詢時,將多個資料表根據共同欄位的值合併的強大工具。你可以利用SQL連接,快速整合來自不同表格的資料,讓查詢結果更完整。只要掌握JOIN的用法,就能有效提升資料處理的效率。

核心要點

  • SQL JOIN能將多個資料表依共同欄位合併,讓查詢結果更完整且有效率。
  • 常見JOIN類型包括INNER JOIN、LEFT JOIN、RIGHT JOIN、FULL JOIN和CROSS JOIN,各有不同資料保留方式。
  • 寫JOIN時必須設定正確連接條件,避免產生大量重複資料或錯誤結果。
  • 使用JOIN時,注意NULL值代表沒有對應資料,分析結果時要特別留意。
  • JOIN語法中,連接條件寫在ON,篩選條件寫在WHERE,能避免漏掉重要資料。

JOIN定義與用途

JOIN是什麼

你在查詢資料時,常常會遇到需要同時取得多個資料表的資訊。JOIN就是一種讓你根據共同欄位,把不同資料表的資料合併起來的方法。你可以想像JOIN像是一座橋,幫助你把分散在不同表格的資料連接在一起。這樣一來,你就能一次查到完整的資訊,而不用分開查詢再手動整理。

例如:你有一個「學生」表格和一個「成績」表格。透過JOIN,你可以直接查出每位學生的分數,而不用分別查詢兩個表格。

SQL連接的核心,就是根據兩個表格中相同的欄位(例如ID或編號),把資料合併成一個查詢結果。這個功能讓你在處理資料時變得更有效率,也能減少重複的工作。

應用場景

你在學校、公司或日常生活中,經常會遇到需要整合多個資料來源的情況。SQL連接在這些場景中扮演非常重要的角色:

  • 資料分析:你可以用SQL連接,把不同來源的數據合併,進行更深入的分析。例如,分析顧客資料和購買紀錄,找出消費習慣。
  • 報表製作:你需要製作一份完整的報表時,常常要從多個表格抓取資料。SQL連接讓你一次取得所有需要的資訊,節省大量時間。
  • 複雜查詢:當你要查詢的條件變多,或需要跨表格比對資料時,SQL連接可以幫你輕鬆完成。例如,查詢哪些學生同時參加了多個活動。

小提醒:只要你想要把不同表格的資料「合併查詢」,幾乎都會用到SQL連接。這是資料庫查詢中不可或缺的技能。

你只要學會使用JOIN,就能大幅提升資料處理的效率。無論是學校作業還是職場專案,SQL連接都能幫你快速整合資訊,讓你的查詢結果更完整、更有價值。

SQL連接類型

sql連接類型
sql連接類型

你在學習SQL連接時,會發現有好幾種不同的JOIN方式。每一種JOIN都會影響查詢結果中資料的保留範圍。下面我會帶你認識五種最常見的SQL連接類型。

INNER JOIN

INNER JOIN是最常用的SQL連接。你只會取得兩個表格中「同時存在」的資料。換句話說,只有當兩個表格的連接欄位都有對應資料時,查詢結果才會顯示這一筆資料。

LEFT JOIN

LEFT JOIN會保留左邊表格的所有資料。即使右邊表格沒有對應資料,左邊的資料也會出現在查詢結果中。右邊沒有對應時,欄位會顯示NULL。

RIGHT JOIN

RIGHT JOIN和LEFT JOIN相反。你會保留右邊表格的所有資料。左邊沒有對應時,左邊的欄位會顯示NULL。

FULL JOIN

FULL JOIN會保留左右兩邊表格的所有資料。只要任一邊有資料,查詢結果都會顯示。沒有對應的部分會顯示NULL。注意:MySQL原生不支援FULL JOIN,你可以用UNION來模擬。

CROSS JOIN

CROSS JOIN會產生兩個表格所有資料的組合。你會得到「笛卡兒積」,也就是每一筆左表資料都會和右表每一筆資料配對。這種SQL連接很少用在實務查詢,通常用來產生所有可能的組合。

小提醒:你在選擇SQL連接類型時,要根據查詢需求決定資料保留範圍。

JOIN類型查詢結果資料來源說明MySQL支援狀況
INNER JOIN兩表皆有對應才顯示
LEFT JOIN保留左表全部,右表無對應為NULL
RIGHT JOIN保留右表全部,左表無對應為NULL
FULL JOIN兩表全部,無對應為NULL❌(需UNION)
CROSS JOIN兩表所有組合

你只要掌握這些SQL連接類型,就能靈活處理多表查詢,讓資料整合更有效率。

JOIN語法解析

5c21c49489b54bc6a1b7ac2ecfd1bd00.webp
JOIN語法解析

基本語法結構

你在寫SQL連接時,最常見的語法結構如下:

SELECT 欄位名稱
FROM 表格A
JOIN 表格B
ON 表格A.欄位 = 表格B.欄位;

這裡有幾個重要的部分:

  • SELECT:你要查詢哪些欄位。
  • FROM:指定主要的資料表。
  • JOIN:選擇要連接的資料表,可以是INNER JOIN、LEFT JOIN等。
  • ON:設定連接條件,告訴資料庫要用哪個欄位來做配對。

小提醒:你可以根據需求選擇不同的JOIN類型,讓SQL連接查詢結果更符合你的目標。

連接條件設定

你在設定連接條件時,通常會用兩個表格的共同欄位。這些欄位常常是主鍵(Primary Key)和外鍵(Foreign Key)。主鍵在一個表格中是唯一的,外鍵則用來對應另一個表格的主鍵。

舉例來說:

SELECT 學生.姓名, 成績.分數
FROM 學生
INNER JOIN 成績
ON 學生.學生ID = 成績.學生ID;

這裡你用學生ID來連接兩個表格。這樣可以確保每個學生的資料正確對應到成績。

表名與欄位命名

當你查詢的表格有相同欄位名稱時,記得加上表名或別名,避免混淆。你可以這樣寫:

SELECT A.姓名, B.分數
FROM 學生 AS A
JOIN 成績 AS B
ON A.學生ID = B.學生ID;

這樣你就能清楚知道每個欄位來自哪個表格。這個習慣能讓你的SQL連接更安全,也更容易維護。

常見誤區與技巧

條件遺漏

你在寫JOIN時,最容易犯的錯誤就是忘記設定連接條件。當你沒有在ON後面指定正確的欄位,資料庫會把兩個表格的所有資料組合起來,產生大量重複資料。這種情況叫做「笛卡兒積」,查詢結果會比你預期的多出很多行。

小提醒:每次寫JOIN語法時,請檢查ON後面是否有正確的連接條件。這樣可以避免資料錯誤或查詢效能變差。

NULL值處理

你在使用LEFT JOIN、RIGHT JOIN或FULL JOIN時,經常會看到查詢結果出現NULL。這代表某一邊的表格沒有對應資料。例如,LEFT JOIN會保留左表所有資料,右表沒有對應時,右表欄位就會顯示NULL。

  • INNER JOIN:只顯示兩表都有對應的資料,通常不會出現NULL(除非原本資料就有NULL)。
  • LEFT JOIN:右表無對應時,右表欄位為NULL。
  • RIGHT JOIN:左表無對應時,左表欄位為NULL。
  • FULL JOIN:兩邊無對應時,對應欄位都可能為NULL。

注意:你在分析查詢結果時,看到NULL就要知道這是沒有對應資料的訊號。

WHERE與JOIN搭配

你常常會把WHERE條件和JOIN條件混在一起。正確做法是:用ON來設定表格之間的連接條件,用WHERE來篩選查詢結果。例如:

SELECT *
FROM 學生
LEFT JOIN 成績 ON 學生.學生ID = 成績.學生ID
WHERE 成績.分數 > 60;

這樣寫會只顯示分數大於60的學生,但如果成績表沒有對應資料,這些學生會被排除。你如果想保留所有學生,應該把條件寫在ON後面。

 建議:先用ON連接表格,再用WHERE做資料篩選。這樣可以避免漏掉你想查的資料。

 

你已經學會SQL JOIN的基本觀念與常見用法。選擇正確的JOIN類型,能讓你查詢多表資料時更有效率。

 多練習不同JOIN語法,遇到問題時記得檢查條件設定。
JOIN是資料庫查詢的核心技能。你只要熟練這些技巧,就能大幅提升資料處理能力!

FAQ

SQL JOIN和子查詢有什麼不同?

你用JOIN可以同時查多個表格。子查詢則是先查一個表,再用結果查另一個表。JOIN通常查詢速度較快。

什麼時候該用LEFT JOIN?

你想保留左表所有資料時,請用LEFT JOIN。即使右表沒有對應資料,左表的資料也會顯示。

可以在一個查詢中用多個JOIN嗎?

你可以在一個SQL語句中連接多個表格。只要每個JOIN後面加上正確的連接條件即可。

JOIN查詢很慢怎麼辦?

你可以檢查索引是否有設好。加上索引可以讓JOIN查詢更快。也可以只查需要的欄位。

CROSS JOIN什麼時候會用到?

你想產生所有可能的組合時,可以用CROSS JOIN。例如:你要列出所有商品和所有顏色的搭配。

帆軟產品免費試用

企業戰情室報表軟體

企業戰情室報表軟體

複雜報表/戰情室/資料填報/數位孿生

企業商業智慧BI軟體

企業商業智慧BI軟體

自助資料處理/Dashboard/探索分析

一站式資料整合平台

一站式資料整合平台

資料同步/ETL資料開發/API資料服務

免費資源下載

×

立即下載

姓名

郵箱

公司完整名稱

管道了解

-- 您是怎麽瞭解的我們 --

網路搜尋
Facebook臉書
媒體/部落格/論壇
YouTube
電子報
線下展會
線下課程
他人推薦
其他

職位

-- 選擇您的職稱 --

IT資訊&數據部門
一般部門
管理/ 決策者
老師
學生
其他

是否有報表/BI/數位建設需求?

-- 請選擇 --

沒有
不確定

手機號碼

SMS 驗證碼

×

立即下載

姓名

郵箱

公司完整名稱

管道了解

-- 您是怎麽瞭解的我們 --

網路搜尋
Facebook臉書
媒體/部落格/論壇
YouTube
電子報
線下展會
線下課程
他人推薦
其他

職位

-- 選擇您的職稱 --

IT資訊&數據部門
一般部門
管理/ 決策者
老師
學生
其他

是否有報表/BI/數位建設需求?

-- 請選擇 --

沒有
不確定

手機號碼

SMS 驗證碼

×

立即下載

姓名

郵箱

公司完整名稱

管道了解

-- 您是怎麽瞭解的我們 --

網路搜尋
Facebook臉書
媒體/部落格/論壇
YouTube
電子報
線下展會
線下課程
他人推薦
其他

職位

-- 選擇您的職稱 --

IT資訊&數據部門
一般部門
管理/ 決策者
老師
學生
其他

是否有報表/BI/數位建設需求?

-- 請選擇 --

沒有
不確定

手機號碼

SMS 驗證碼

×

立即下載

姓名

郵箱

公司完整名稱

管道了解

-- 您是怎麽瞭解的我們 --

網路搜尋
Facebook臉書
媒體/部落格/論壇
YouTube
電子報
線下展會
線下課程
他人推薦
其他

職位

-- 選擇您的職稱 --

IT資訊&數據部門
一般部門
管理/ 決策者
老師
學生
其他

是否有報表/BI/數位建設需求?

-- 請選擇 --

沒有
不確定

手機號碼

SMS 驗證碼

×

立即下載

姓名

郵箱

公司完整名稱

管道了解

-- 您是怎麽瞭解的我們 --

網路搜尋
Facebook臉書
媒體/部落格/論壇
YouTube
電子報
線下展會
線下課程
他人推薦
其他

職位

-- 選擇您的職稱 --

IT資訊&數據部門
一般部門
管理/ 決策者
老師
學生
其他

是否有報表/BI/數位建設需求?

-- 請選擇 --

沒有
不確定

手機號碼

SMS 驗證碼

×

立即下載

姓名

郵箱

公司完整名稱

管道了解

-- 您是怎麽瞭解的我們 --

網路搜尋
Facebook臉書
媒體/部落格/論壇
YouTube
電子報
線下展會
線下課程
他人推薦
其他

職位

-- 選擇您的職稱 --

IT資訊&數據部門
一般部門
管理/ 決策者
老師
學生
其他

是否有報表/BI/數位建設需求?

-- 請選擇 --

沒有
不確定

手機號碼

SMS 驗證碼

我們很樂意傾聽你的需求,解答您的疑問,並提供專業建議, 助力您的企業實現智慧轉型!

×

意見回饋

姓名

電郵

公司

國家/地區

-- select an option --

電話

投訴原因

請選擇投訴原因

代理商問題
產品問題
技術支援服務問題
專案問題
銷售問題
商務問題
行銷問題
其他

投訴內容