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
不同,後者只返回兩個表中都有匹配的記錄。