SQL 內連接(INNER JOIN)適用場景詳解:多表關聯查詢的核心用法
INNER JOIN(或簡寫 JOIN)僅返回**兩張表中滿足連接條件的匹配行**。理解其適用場景,是編寫高效 SQL 的基礎。
核心語法
SELECT 列名
FROM 表A
INNER JOIN 表B ON 表A.公共字段 = 表B.公共字段;
適用場景
- 主從表查詢:訂單表 + 訂單詳情表,只需顯示有明細的訂單。
- 多表關聯報表:用戶表 JOIN 訂單 JOIN 商品,生成銷售明細,無匹配行不輸出。
- 數據清洗/驗證:找出兩張表中 ID 都存在的記錄,排除孤兒數據。
對比:LEFT JOIN vs INNER JOIN
假設 省份表 (左) 與 城市表 (右):
| 省份 | 城市 |
| 河北 | 石家莊、邢台 |
| 山東 | 青島、濟南 |
| 遼寧 | (無) |
- INNER JOIN:僅返回河北、山東及其城市(遼寧被過濾)。
- LEFT JOIN:返回所有省份,遼寧城市顯示 NULL。
性能提示
- 確保連接字段有索引(主鍵/外鍵自動索引)。
- 小表驅動大表:將數據量小的表放在左側(或用
STRAIGHT_JOIN 指定順序)。
- 避免
SELECT *,僅選取所需列,減少網絡傳輸與緩衝區壓力。
掌握內連接語義,根據業務是否需要「保留無匹配主表記錄」來選擇 JOIN 類型。