Left join意思

在資料庫查詢中,LEFT JOIN(或LEFT OUTER JOIN)是一種連線方式,用於在兩個或多個表之間建立關係。LEFT JOIN 的意思是,無論右表(第二個表)是否有匹配的記錄,都會返回左表(第一個表)的所有記錄。

舉個例子,假設我們有兩張表:users 表和 posts 表。users 表存儲用戶信息,posts 表存儲帖子信息。每個用戶可以發布多篇帖子,但有些用戶可能沒有帖子。

-- 假設 users 表是這樣的:
users
+----+--------+
| id | name   |
+----+--------+
| 1  | Alice  |
| 2  | Bob    |
| 3  | Charlie|
+----+--------+

-- 假設 posts 表是這樣的:
posts
+----+------------+
| id | user_id   |
+----+------------+
| 1  | 1          |
| 2  | 1          |
| 3  | 2          |
+----+------------+

如果我們想要查詢所有的用戶,以及他們發布的帖子,我們可以使用 LEFT JOIN

SELECT users.name, posts.id
FROM users
LEFT JOIN posts ON users.id = posts.user_id;

這個查詢的結果會是這樣的:

+--------+------+
| name   | id   |
+--------+------+
| Alice  | 1    |
| Alice  | 2    |
| Bob    | 3    |
| Charlie| null |
+--------+------+

在這個結果中,Alice 和 Bob 都有帖子,所以他們在 posts 表中都有匹配的記錄。Charlie 沒有帖子,所以在 posts 表中沒有匹配的記錄,但是 LEFT JOIN 仍然會返回 Charlie 的記錄,並且 posts.id 欄位為 null,表示沒有匹配。

LEFT JOIN 通常用於確保在結果集中包含左表的所有記錄,即使右表中沒有匹配的記錄。這與 INNER JOIN 不同,後者只返回兩個表中都有匹配的記錄。