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

Oracle 表連接大全:內連接、外連接、交叉連接語法與範例

     編輯:Oracle 資料庫基礎

掌握 Oracle 多表連接查詢核心語法

表連接是 SQL 查詢的核心。本文詳細說明 Oracle 內連接、左/右/全外連接、交叉連接的語法差異、結果集特性,並提供 ANSI 標準與 Oracle 傳統語法對照,助你精準控制資料組合邏輯。

連接類型對照表

連接類型ANSI 標準語法Oracle 傳統語法 (+)結果集特性
內連接INNER JOIN ... ONWHERE a.id = b.id僅返回雙方符合條件的行
左外連接LEFT [OUTER] JOIN ... ONWHERE a.id = b.id(+)左表全保留,右表無配對填 NULL
右外連接RIGHT [OUTER] JOIN ... ONWHERE a.id(+) = b.id右表全保留,左表無配對填 NULL
全外連接FULL [OUTER] JOIN ... ON不支援 (需 UNION 實現)雙表全保留,無配對填 NULL
交叉連接CROSS JOIN無對應語法笛卡兒積,行數 = 左行數 × 右行數

實戰範例

左外連接

-- ANSI 標準 (推薦)
SELECT * FROM mt_pb_org o
LEFT JOIN mt_pb_orgframe f ON o.PB_ORGFRAMEID = f.PB_ORGFRAMEID;

-- Oracle 傳統語法
SELECT * FROM mt_pb_org o, mt_pb_orgframe f
WHERE o.PB_ORGFRAMEID = f.PB_ORGFRAMEID(+);

右外連接

SELECT * FROM mt_pb_org o
RIGHT JOIN mt_pb_orgframe f ON o.PB_ORGFRAMEID = f.PB_ORGFRAMEID;

全外連接

SELECT * FROM mt_pb_org o
FULL JOIN mt_pb_orgframe f ON o.PB_ORGFRAMEID = f.PB_ORGFRAMEID;

交叉連接

SELECT * FROM mt_pb_org o CROSS JOIN mt_pb_orgframe f;

關鍵差異提醒

  • Oracle 傳統外連接 (+) 只能單向,無法直接實現 FULL OUTER JOIN,需用 UNION 組合 LEFT+RIGHT。
  • ANSI 語法可讀性強、支援多表連接順序控制,建議優先採用。
  • 交叉連接無 WHERE 條件,資料量大時極易造成效能災難,謹慎使用。

靈活運用各類連接,能精準表達複雜業務查詢邏輯。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved