首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> SQL Server 資料庫 >> 關於SqlServer

SQL 進階教程:左連接、右連接、全連接與 NULL 處理

     編輯:關於SqlServer

內連接(INNER JOIN)僅回傳雙方匹配的列。若需保留單方所有列(即使另一方無匹配),需使用外連接。

核心概念:NULL 值

  • NULL 代表「未知」或「不存在」,不等於空字串、不等於 0。
  • 判斷 NULL 必須用 IS NULL / IS NOT NULL,不可用 =、<>。

範例:查無領導政黨 SELECT code, name FROM party WHERE leader IS NULL;查被開除黨籍議員 SELECT name FROM msp WHERE party IS NULL。

三種外連接

連接類型語法結果包含
左連接LEFT JOIN左表所有列 + 右表匹配列(無匹配則 NULL)
右連接RIGHT JOIN右表所有列 + 左表匹配列
全連接FULL JOIN左右表所有列(雙向保留)

實戰範例:蘇格蘭議會議員與政黨

  • party(Code, Name, Leader)
  • msp(Name, Party, Constituency) — Party 為政黨代碼,可為 NULL

內連接(遺漏無黨籍議員)

SELECT msp.name, party.name
FROM msp JOIN party ON msp.party = party.code;

結果缺少 Canavan MSP, Dennis(party IS NULL),因無匹配被過濾。

左連接(保留所有議員)

SELECT msp.name, party.name
FROM msp LEFT JOIN party ON msp.party = party.code;

無黨籍議員 party.name 顯示 NULL,其餘正常顯示政黨名。

右連接(保留所有政黨)

SELECT msp.name, party.name
FROM msp RIGHT JOIN party ON msp.party = party.code;

無議員政黨 msp.name 顯示 NULL,無黨籍議員被排除。

全連接(雙向保留)

SELECT msp.name, party.name
FROM msp FULL JOIN party ON msp.party = party.code;

同時保留無黨籍議員與無議員政黨,完整呈現雙方實況。

選擇指南

  • 需保留「主表」所有資料 → LEFT JOIN(主表置左)。
  • 需保留「查詢表」所有資料 → RIGHT JOIN。
  • 雙方皆需完整保留 → FULL JOIN。
  • 僅需雙方皆存在的資料 → INNER JOIN。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved