加入
什么是连接(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
处连接,这是一个实体键和外键)。