
- SQL 教程
- SQL - 首頁
- SQL - 概述
- SQL - RDBMS 概念
- SQL - 資料庫
- SQL - 語法
- SQL - 資料型別
- SQL - 運算子
- SQL - 表示式
- SQL 資料庫
- SQL - 建立資料庫
- SQL - 刪除資料庫
- SQL - 選擇資料庫
- SQL - 重新命名資料庫
- SQL - 顯示資料庫
- SQL - 備份資料庫
- SQL 表
- SQL - 建立表
- SQL - 顯示錶
- SQL - 重命名錶
- SQL - 截斷表
- SQL - 克隆表
- SQL - 臨時表
- SQL - 修改表
- SQL - 刪除表
- SQL - 刪除表資料
- SQL - 約束
- SQL 查詢
- SQL - 插入查詢
- SQL - 選擇查詢
- SQL - SELECT INTO
- SQL - INSERT INTO SELECT
- SQL - 更新查詢
- SQL - 刪除查詢
- SQL - 排序結果
- SQL 檢視
- SQL - 建立檢視
- SQL - 更新檢視
- SQL - 刪除檢視
- SQL - 重新命名檢視
- SQL 運算子和子句
- SQL - WHERE 子句
- SQL - TOP 子句
- SQL - DISTINCT 子句
- SQL - ORDER BY 子句
- SQL - GROUP BY 子句
- SQL - HAVING 子句
- SQL - AND & OR
- SQL - 布林 (BIT) 運算子
- SQL - LIKE 運算子
- SQL - IN 運算子
- SQL - ANY, ALL 運算子
- SQL - EXISTS 運算子
- SQL - CASE
- SQL - NOT 運算子
- SQL - 不等於
- SQL - IS NULL
- SQL - IS NOT NULL
- SQL - NOT NULL
- SQL - BETWEEN 運算子
- SQL - UNION 運算子
- SQL - UNION vs UNION ALL
- SQL - INTERSECT 運算子
- SQL - EXCEPT 運算子
- SQL - 別名
- SQL 連線
- SQL - 使用連線
- SQL - 內連線
- SQL - 左連線
- SQL - 右連線
- SQL - 交叉連線
- SQL - 全連線
- SQL - 自連線
- SQL - 刪除連線
- SQL - 更新連線
- SQL - 左連線 vs 右連線
- SQL - UNION vs JOIN
- SQL 金鑰
- SQL - 唯一鍵
- SQL - 主鍵
- SQL - 外部索引鍵
- SQL - 組合鍵
- SQL - 備選鍵
- SQL 索引
- SQL - 索引
- SQL - 建立索引
- SQL - 刪除索引
- SQL - 顯示索引
- SQL - 唯一索引
- SQL - 聚簇索引
- SQL - 非聚簇索引
- 高階 SQL
- SQL - 萬用字元
- SQL - 註釋
- SQL - 注入
- SQL - 託管
- SQL - MIN & MAX
- SQL - NULL 函式
- SQL - 檢查約束
- SQL - 預設約束
- SQL - 儲存過程
- SQL - NULL 值
- SQL - 事務
- SQL - 子查詢
- SQL - 處理重複項
- SQL - 使用序列
- SQL - 自動遞增
- SQL - 日期 & 時間
- SQL - 遊標
- SQL - 公共表表達式
- SQL - GROUP BY vs ORDER BY
- SQL - IN vs EXISTS
- SQL - 資料庫調優
- SQL 函式參考
- SQL - 日期函式
- SQL - 字串函式
- SQL - 聚合函式
- SQL - 數值函式
- SQL - 文字 & 圖片函式
- SQL - 統計函式
- SQL - 邏輯函式
- SQL - 遊標函式
- SQL - JSON 函式
- SQL - 轉換函式
- SQL - 資料型別函式
- SQL 有用資源
- SQL - 問答
- SQL - 快速指南
- SQL - 有用函式
- SQL - 有用資源
- SQL - 討論
左連線 vs 右連線
左連線和右連線的主要區別在於連線表的方式。
它們都是外連線;也就是說,它們保留一個表中的不匹配行,並丟棄另一個表中的不匹配行。左連線保留左側表的不匹配行,而右連線保留右側表的不匹配行。
左連線的工作原理
左連線或 SQL 中的左外連線組合兩個或多個表,其中第一個表按原樣返回;但是,只有在第一個表中具有對應項的記錄才會從後續表中返回。
如果 ON 子句在後續表中與第一個表中的行匹配的記錄為零,則左連線仍將在結果中返回第一個表的這些行,但在右表中的每一列中都為 NULL。
語法
以下是 SQL 中左連線的基本語法:
SELECT table1.column1, table2.column2... FROM table1 LEFT JOIN table2 ON table1.column_name = table2.column_name;
示例
下面的示例演示了對兩個相關表進行左連線操作。這裡,第一個表包含工資資訊,第二個表包含婚姻狀況資訊。由於 Alex 的狀態未知,因此未在表中記錄。

當使用左連線查詢連線兩個表時,由於沒有與 Alex 的狀態匹配的記錄,因此該值在最終表中記錄為 NULL。
右連線的工作原理
SQL 中的右連線或右外連線查詢返回右表中的所有行,即使左表中沒有匹配項也是如此。這意味著如果 ON 子句在左表中與右表中的記錄匹配的記錄為 0(零),則右連線仍將在結果中返回右表的行,但在左表中的每一列中都為 NULL 值。
語法
以下是 SQL 中右連線的基本語法:
SELECT table1.column1, table2.column2... FROM table1 RIGHT JOIN table2 ON table1.column_name = table2.column_name;
示例
在本例中,對同一張表執行右連線操作。在這裡,我們從右表開始連線;由於右表不包含與 Alex 行匹配的記錄值,因此該行將從最終表中丟棄。

最終表只包含兩行,因為右表只包含兩行。
左連線與右連線
讓我們在下表中總結左連線和右連線之間的所有區別:
左連線 | 右連線 |
---|---|
左連線將第一個表或左表的資料與第二個表中的資料匹配。如果資料匹配,則組合記錄;否則,記錄為 NULL。 | 右連線將第二個表或右表的資料與第一個表中的資料匹配。如果資料匹配,則組合記錄;否則,記錄為 NULL。 |
如果第一個表的行數少於第二個表,則丟棄第二個表中多餘的不匹配行。 | 如果第二個表的行數少於第一個表,則丟棄第一個表中多餘的不匹配行。 |
此連線也稱為左外連線 | 此連線也稱為右外連線 |
在 Transact SQL 中,使用 *= 代替使用 LEFT JOIN 或 LEFT OUTER JOIN 查詢。 | 在 Transact SQL 中,使用 =* 代替使用 RIGHT JOIN 或 RIGHT OUTER JOIN 查詢。 |
從總結中我們可以看出,左連線和右連線之間的差異並不廣泛。它們之間的每一個區別都歸結於連線表的方式和連線的視角。
廣告