LEFT 和 RIGHT JOIN

已完成

LEFT JOIN

LEFT JOIN也稱為 ,LEFT OUTER JOIN是一種 SQL 作業類型,可保留查詢中左側數據表或第一個數據表中的所有數據列,而不論右邊或第二個數據表中是否有相符的數據列。 找到匹配項時,右側表格中的欄位將填入相應的值。 不過,如果沒有相符項目,則結果中源自右側資料表的資料行會包含 Null。
當您需要從某個數據表建立完整清單,同時從另一個數據表附加相關數據時,即使這類關聯性不完整或不存在,這個聯結也很有用。

SELECT customers.customer_name, orders.order_id
FROM sales.customers AS customers
LEFT JOIN sales.orders AS orders ON customers.customer_id = orders.customer_id;

使用 LEFT JOIN 的 SQL 查詢會從 sales.customers 資料表擷取所有客戶,包括在 sales.orders 資料表中沒有任何相符訂單的客戶。 此ON條款指定customer_id欄位將兩個數據表連結起來。
對於已下訂單的客戶,會顯示 orders 資料表中的 order_id。 不過,如果客戶沒有任何訂單,結果仍會包含該客戶,並且 order_id 欄位顯示空值。

RIGHT JOIN

RIGHT JOIN也稱為 RIGHT OUTER JOIN,是一項 SQL 作業,可確保結果中包含來自右方 (或第二個) 數據表的所有數據列,而不論左側數據表或第一個數據表中是否有相符的數據列。
如果找不到相符項目,則左側資料表中的資料行會顯示 Null 值。 這種聯結通常用來聚焦於右側資料表中的資料,同時在存在關聯性的情況下從左側資料表附加資訊。

SELECT customers.customer_name, orders.order_id
FROM sales.customers AS customers
RIGHT JOIN sales.orders AS orders ON customers.customer_id = orders.customer_id;

此查詢會從 sales.orders 資料表擷取所有資料列,確保結果中包含每個訂單,即使 sales.customers 資料表中沒有任何相關聯的記錄也一樣。
ON 子句會透過 customer_id 列指定兩個資料表之間的關係。 如果訂單有對應的客戶,則 customer_name 數據行會填入 customer_name,則會針對不相符的記錄顯示 Null 值。