萬盛學電腦網

您现在的位置: 萬盛學電腦網 >> 程式設計 >  >> 資料庫 >> MySQL 教學

MySQL JOIN ... USING() 語法詳解與適用場景

USING() 是 ON 條件的簡寫,要求兩表擁有同名欄位且作為連接鍵。

基本語法對照

-- USING 寫法
SELECT a.*, b.* FROM a LEFT JOIN b USING (colA);

-- 等價 ON 寫法
SELECT a.*, b.* FROM a LEFT JOIN b ON a.colA = b.colA;

多表串接

SELECT a.*, b.*, c.*
FROM a
LEFT JOIN b USING (colA)   -- colA 在 a,b 皆存在
LEFT JOIN c USING (colB);  -- colB 在 a,c 皆存在 (注意:非 b,c)

陷阱:後續 USING 欄位必須存在於結果集目前所有表中,上例 colB 需在 a 與 c 同時存在,而非 b 與 c。

適用與不適用場景

場景建議
雙表同名 PK/FK 連接✅ 簡潔優雅
多表星狀連接 (同一維度鍵)✅ 如 fact 表連多個 dimension 表共用 dim_id
欄位名稱不同❌ 必須用 ON a.id = b.fk_id
複合條件/非等值連接❌ 必須用 ON
需在 SELECT 輸出連接鍵⚠️ USING 只輸出一次,ON 需指定 a.colA 或 b.colA

效能與相容性

  • 執行計畫與 ON 完全一致,無效能差異。
  • MySQL、PostgreSQL、SQLite 支援;SQL Server、Oracle 不支援USING()。

結論:同名鍵的簡單等值連接首選 USING(),可讀性高;其餘情況一律用 ON。

copyright © 萬盛學電腦網 all rights reserved