什么是连接(join)?
连接(join)是关系数据库中将两个表的结果组合在一起的操作。
虽然“连接”这个词听起来像是您正在合并表本身,但连接实际上是从两个(或更多)不同的表中取出行,并返回一组新的行,这些新行结合了这些表的列,并使用实体键和外键来确定哪些行是相关的。
连接类型
有四种SQL 连接类型
- 左外连接:选择表 A 中的所有记录,以及满足连接条件的表 B 中的记录(如果有)。
- 右外连接:选择表 B 中的所有记录,以及满足连接条件的表 A 中的记录(如果有)。
- 内连接:仅选择表 A 和表 B 中满足连接条件的记录。
- 全外连接:选择两个表中的所有记录,无论连接条件是否满足。
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
,一个实体键和一个外键)。