聯合查詢(JOIN)能高效整合多表資料。本文以兩表 `T1(用戶)`、`T2(積分等級)` 為例,詳細說明四種 JOIN 類型的語法、結果差異與適用場景。
| T1:用戶表 | T2:積分等級表 | ||||
|---|---|---|---|---|---|
| userid | username | password | userid | jifen | dengji |
| 1 | jack | jackpwd | 1 | 20 | 3 |
| 2 | owen | owenpwd | 3 | 50 | 6 |
僅回傳**兩表皆符合條件**的列。
SELECT * FROM T1 INNER JOIN T2 ON T1.userid = T2.userid;
結果:1 行(userid=1)。userid=2 在 T2 無對應,userid=3 在 T1 無對應,皆被排除。
回傳 **左表所有列**,右表符合條件者合併,不符合者以 `NULL` 填充。
SELECT * FROM T1 LEFT OUTER JOIN T2 ON T1.userid = T2.userid;
結果:2 行。userid=1 合併 T2 資料;userid=2 右側欄位為 NULL。
回傳 **右表所有列**,左表符合條件者合併,不符合者以 `NULL` 填充。
SELECT * FROM T1 RIGHT OUTER JOIN T2 ON T1.userid = T2.userid;
結果:2 行。userid=1 合併 T1 資料;userid=3 左側欄位為 NULL。
回傳 **兩表所有列**,可對應者合併,無對應者以 `NULL` 填充(等同 LEFT + RIGHT 去重)。
SELECT * FROM T1 FULL OUTER JOIN T2 ON T1.userid = T2.userid;
結果:3 行。userid=1 合併;userid=2 僅 T1;userid=3 僅 T2。