加入
什麼是聯結 (Join)?
聯結 (Join) 是將**關聯式資料庫**中兩個表格的結果合併。
雖然「聯結 (Join)」這個詞聽起來像是合併表格本身,但聯結實際上是從兩個(或多個)不同表格中取得列,並傳回一組新的列,其中結合了這些表格的欄,並使用實體鍵和外來鍵來判斷哪些列是相關的。
聯結類型
SQL 聯結共有四種類型:SQL 聯結類型
- 左外部聯結 (Left outer join):選取表格 A 中的所有記錄,以及表格 B 中符合聯結條件的記錄(如果有的話)。
- 右外部聯結 (Right outer join):選取表格 B 中的所有記錄,以及表格 A 中符合聯結條件的記錄(如果有的話)。
- 內部聯結 (Inner join):僅選取表格 A 和 B 中符合聯結條件的記錄。
- 完整外部聯結 (Full outer join):選取兩個表格中的所有記錄,無論是否符合聯結條件。
Metabase 中的聯結範例
在**查詢產生器**中提出的問題,Metabase 預設使用左外部聯結,但**原生 SQL 查詢**則預設使用內部聯結(也就是說,如果您僅在查詢中使用 JOIN
而未指定聯結類型)。
假設我們想要從 Metabase **範例資料庫**中的 People
和 Orders
表格傳回結果,例如包含訂單 ID、下訂單的人員姓名及其使用者 ID 的表格。
查詢產生器聯結
圖 1 顯示了此聯結在 Metabase **筆記本編輯器**中的樣子。我們也會想要選擇要顯示哪些欄,這樣就不會顯示兩個表格中的所有欄。

原生 SQL 查詢聯結
如果我們要在 SQL 中編寫相同的查詢,可能會像這樣
SELECT
orders.id AS "Order ID",
people.name AS "Name",
people.id AS "User ID"
FROM
people
JOIN
orders ON people.id = orders.user_ID
在此,我們已識別聯結發生的位置(在本例中,是在 People → ID
和 Orders → User_ID
處聯結,即實體鍵和外來鍵)。