PostgreSQL Full Join

17 Mar 2025 | 4 分钟阅读

在本节中,我们将了解 PostgreSQL Full join 的工作原理,它用于在左表右表记录中存在匹配时返回所有记录。我们还将学习如何使用表别名WHERE 子句以及 PostgreSQL Full Outer join 子句

什么是 PostgreSQL Full Join 或 Full Outer Join 子句?

PostgreSQL Full JoinFull Outer Join 用于在左表右表记录中存在匹配时返回所有记录。Full Outer Join 的主要目标是它将结合 PostgreSQL Left JoinPostgreSQL Right Join 子句的结果,并从连接子句两侧的表中返回所有相似或不匹配的行。

以下 Venn 图显示了 PostgreSQL Full Outer Join,我们可以很容易地理解 Full Outer Join左表右表返回所有数据

PostgreSQL Full Join

PostgreSQL Full Outer Join 的语法

Full Outer Join 或 Full Join 的语法如下

在上面的语法中,Full Outer Join 关键字与 SELECT 命令一起使用,并且必须写在 FROM 关键字之后,OUTER 关键字是可选的。

我们将按照以下步骤借助 Full Join 或 Full Outer Join 条件来组合左表和右表

  • 首先,我们将定义两个表中的列列表,我们希望在 SELECT 条件中选择数据。
  • 然后,我们将指定 FROM 子句中的右表,即表 2
  • 最后,我们将在 Full Outer Join 子句中描述左表,即表 1,并在 ON 关键字后写入连接条件。

PostgreSQL Full Join 示例

让我们看一个例子来理解 PostgreSQL Full Outer join 的工作方式

使用 PostgreSQL Full Outer Join 连接两个表

为此,我们将借助 CREATE 命令创建两个名为 Summer_fruitsWinter_fruits 的表,并使用 INSERT 命令插入一些值。

首先,我们将使用 CREATE 命令创建 Summer_fruitsWinter_fruits

以下命令用于创建 Winter_fruits

在执行上述命令后,Summer_fruitsWinter_fruits 表已成功创建。

生成这两个表后,我们就可以使用 INSERT 命令将一些值插入其中,如下所示

在下面的命令中,我们将值插入到 Winter_fruits 表中

在创建并在 Summer_fruits 和 Winter_fruits 表中插入值后,在执行以下命令时,我们将获得以下输出

表 1:Summer_fruits

输出

PostgreSQL Full Join

表 2:Winter_fruits

输出

执行上述命令后,我们将从 Winter_fruits 表中获取数据

PostgreSQL Full Join

以下查询用于从两个表(Summer_fruitsWinter_fruits)中选择记录

或者,我们在上面的查询中使用 Full Outer Join 关键字 代替 Full Join 关键字,我们将获得类似的输出

输出

在执行上述命令后,我们将获得以下结果

PostgreSQL Full Join

PostgreSQL Full Outer Join 的工作原理

  • 它用于获取左表 (Summer_fruits)右表 (Winter_fruits) 的记录。
  • 如果 Summer_fruits(即表 1 或左表)中的一行与 Winter_fruits(即表 2 或右表)中的一行匹配,则结果行将包含来自两个表行中的列的列。
  • 如果连接表中的行不相似,则 Full Outer Join 会为表的每一列放置 NULL 值

PostgreSQL Full Join 的表别名

我们将使用表别名为连接的表分配短名称,以使命令更易于理解,因为有时编写完整的表会导致繁琐的过程。

在以下命令中,我们将使用表别名,它返回类似的结果

输出

在实现上述命令后,我们将获得以下输出

PostgreSQL Full Join

使用 where 子句的 PostgreSQL Full Join

我们还可以将 Full join 与 WHERE 条件一起使用。WHERE 子句允许我们返回过滤结果。

在下面的示例中,我们将从 Summer_fruitsWinter_fruits 两个表中选择行,其中 Summer_fruits_names 不等于 Mango

输出

执行上述命令后,我们将获得以下输出

PostgreSQL Full Join

概述

PostgreSQL Full join 或 Full Outer Join 部分中,我们学习了以下主题

  • 我们使用 Full join 子句从两个或多个表中选择数据。
  • 我们将 Full join 条件与表别名和 WHERE 子句一起使用。

下一个主题PostgreSQL Cross Join