本課程深入介紹 SQL 中的 LEFT JOIN 與 RIGHT JOIN 語法,幫助你理解資料表間的外部連接原理與差異,並透過互動練習強化實作。
一、SQL外部連接的概念
外部連接(OUTER JOIN)除了回傳符合連接條件的資料,還會回傳某個表格中不符合條件的資料。
不符合條件的欄位會以 NULL 填充。
二、LEFT JOIN(左連接)
回傳左表所有資料,以及右表符合連接條件的資料。
如果右表沒有匹配資料,則右表欄位為 NULL。
三、RIGHT JOIN(右連接)
回傳右表所有資料,以及左表符合連接條件的資料。
如果左表沒有匹配資料,則左表欄位為 NULL。
四、SQL基本語法
SELECT 欄位 FROM 表格1 LEFT JOIN 表格2 ON 表格1.欄位 = 表格2.欄位;
SELECT 欄位 FROM 表格1 RIGHT JOIN 表格2 ON 表格1.欄位 = 表格2.欄位;
五、SQL範例
-- 假設有客戶(customers)和訂單(orders)兩張表
-- customers 表: id, name (新增客戶4: 小趙, 無訂單)
-- orders 表: order_id, customer_id, amount (訂單104, customer_id 4, 無對應客戶)
-- LEFT JOIN 範例 (以客戶為主)
SELECT
c.name,
o.order_id
FROM
customers c
LEFT JOIN
orders o ON c.id = o.customer_id;
-- RIGHT JOIN 範例 (以訂單為主)
SELECT
c.name,
o.order_id
FROM
customers c
RIGHT JOIN
orders o ON c.id = o.customer_id;
六、SQL常見錯誤
混淆 LEFT JOIN 和 RIGHT JOIN 的區別。
未正確理解 NULL 值在外部連接結果中的意義。
七、SQL課後小練習
使用 LEFT JOIN 查詢所有商品名稱及對應的訂單明細數量 (如果商品沒有訂單明細,數量顯示NULL或0)。
使用 RIGHT JOIN 查詢所有訂單明細的商品名稱及數量 (如果訂單明細的product_id找不到對應商品,商品名稱顯示NULL)。