加入
什么是连接 (join)?
虽然 “连接” 这个词听起来像是要合并表格本身,但连接实际上是从两个(或更多)不同的表格中获取 行,并返回一个新的行集合,该集合结合了来自这些表格的 列,使用 实体键 和 外键 来确定哪些行是相关的。
连接的类型
共有四种 SQL 连接类型
- 左外连接:从表 A 中选择所有记录,以及表 B 中满足连接条件的记录(如果有)。
- 右外连接:从表 B 中选择所有记录,以及表 A 中满足连接条件的记录(如果有)。
- 内连接:仅选择表 A 和表 B 中满足连接条件的记录。
- 全外连接:选择两个表格中的所有记录,无论是否满足连接条件。
Metabase 中的连接示例
对于在查询构建器中提出的问题,Metabase 默认使用左外连接,但对于原生 SQL 查询,内连接是默认设置(也就是说,如果您在查询中仅使用 JOIN
而不指定连接类型)。
假设我们想从 Metabase 的 示例数据库中的 People
和 Orders
表格中返回结果,例如包含订单 ID、下订单的人员姓名及其用户 ID 的表格。
查询构建器连接
图 1 显示了在 Metabase 的 notebook 编辑器中,此连接的外观。我们还需要选择要显示的列,这样就不会显示两个表格中的每一列。

原生 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
(实体键和外键)处进行连接)。