USING(column) 用於兩表等值連接,要求指定欄位在兩表中同名且同型,自動產生 ON table1.col = table2.col 條件。
-- 等價寫法
SELECT a.*, b.* FROM a LEFT JOIN b USING(colA);
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 皆存在
注意:後續 USING 參考的是第一張表的欄位,非直覺,易誤用。
| 場景 | 建議 |
|---|---|
| 欄位同名、等值連接、簡單查詢 | 使用 USING(),碼簡潔 |
| 欄位異名、複雜條件(範圍、多欄、函數) | 必須用 ON ... |
需顯示連接欄位(SELECT * 會去重) | 改用 ON 或顯式列出欄位 |
USING() 編譯後即轉為 ON,零效能差異。純粹語法糖,團隊統一風格即可。