什么是联接?
一个联接是关系数据库中两个表结果的组合。
虽然“联接”这个词听起来像是您正在合并表本身,但联接实际上是获取两个(或更多)不同表的行,并返回一组新的行,这些行组合了这些表的列,同时使用实体键和外键来确定哪些行是相关的。
联接类型
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
进行联接,它们分别是实体键和外键)。