在關聯式資料庫操作中,LEFT JOIN(左連接) 是最常用的連接類型之一。它的核心特性是:保留左側資料表的所有記錄,即使右側資料表沒有符合條件的匹配行,左側的資料依然會出現在結果集中,右側缺失的欄位會以 NULL 填充。
SELECT 左表.欄位, 右表.欄位
FROM 左表
LEFT JOIN 右表 ON 左表.關聯欄位 = 右表.關聯欄位;
假設我們有兩張表:family(家庭成員)與 food(餐點偏好)。
| family 表 | food 表 |
|---|---|
Position | Age Dad | 41 Mom | 45 Daughter | 17 Dog | (無年齡) |
Meal | Position Steak | Dad Salad | Mom Spinach Soup| (無對應) Tacos | Dad |
SELECT food.Meal, family.Position
FROM family, food
WHERE food.Position = family.Position;
輸出:
Dad - Steak Mom - Salad Dad - Tacos
注意:Daughter 和 Dog 因無對應餐點被排除。
SELECT family.Position, food.Meal
FROM family
LEFT JOIN food ON family.Position = food.Position;
輸出:
Dad - Steak Dad - Tacos Mom - Salad Daughter - NULL Dog - NULL
所有家庭成員都被保留,無匹配餐點者顯示 NULL。
$query = "SELECT family.Position, food.Meal "
. "FROM family "
. "LEFT JOIN food ON family.Position = food.Position";
$result = mysqli_query($conn, $query) or die(mysqli_error($conn));
while ($row = mysqli_fetch_assoc($result)) {
echo $row['Position'] . " - " . ($row['Meal'] ?? 'NULL') . "
";
}
掌握 LEFT JOIN 讓你在多表查詢中遊刃有餘,是 SQL 進階的必修課!