PostgreSQL Right Join

17 Mar 2025 | 6 分钟阅读

在本节中,我们将了解 PostgreSQL 右连接 的工作原理,它用于从右表中返回数据。我们还将学习如何使用 表别名、WHERE 子句、USING 子句以及通过 PostgreSQL 右连接子句 连接多个表。

什么是 PostgreSQL 右外连接或右连接子句?

PostgreSQL 右连接右外连接 用于返回右表中的所有行,以及其他表中满足 ON 条件中定义的 连接 条件的行。如果从 左表 中未找到对应的记录,它将返回 空值

右连接 也可以称为 右外连接 子句。因此,外键 是在 右连接 中使用的可选关键字。在 PostgreSQL 中,右连接左连接 条件平行,但它将给出连接表的相反结果。

下图显示了 PostgreSQL 右连接,我们可以轻松地理解 右连接右表 返回所有数据,并且仅从 左表 返回相似的数据

PostgreSQL Right Join

PostgreSQL 右连接语法

右连接关键字与 SELECT 命令一起使用,并且必须写在 FROM 关键字之后。

在以上语法中,table1 指的是 左表table2 指的是 右表,这意味着特定条件将从 table 2 返回所有记录以及 table1 中符合定义的 连接条件 的记录。

我们将按照以下步骤通过 右连接或右外连接 条件连接 左表和右表

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

注意:在 PostgreSQL 右连接中,如果表包含相似的列名,则 USING 和 ON 子句会产生相似的输出。

PostgreSQL 右连接示例

让我们看一个示例,了解 PostgreSQL 右连接 的工作原理

使用 PostgreSQL 右连接连接两个表

为此,我们将使用我们在 PostgreSQL 内连接 部分中创建的 员工和部门 表格的 PostgreSQL 教程。

表 1:员工

要查看 员工 表的记录,我们将使用 SELECT 命令,如下面的命令所示


PostgreSQL Right Join

表 2:部门

要从 部门 表中查看记录,我们将使用 SELECT 命令,如下面的命令所示

输出

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

PostgreSQL Right Join

以下查询用于从两个表(员工部门)中选择记录

输出

一旦我们实现了上述命令,我们将获得以下结果

PostgreSQL Right Join

PostgreSQL 右连接的工作原理

  • 在上述命令中,员工 是左表,部门 是右表。
  • PostgreSQL 右连接条件从右表(即 部门 表)中选择记录。
  • 然后,它将来自 部门 表的 emp_id、dept_name 和 location 列的值与来自左表(员工)中每行的 emp_id 列中的记录进行匹配。
  • 如果这些记录相似,则 右连接 将创建一个新行,其中包含 Select 子句中的列并将该特定行添加到输出中。
  • 否则,右连接仍会创建一个新行,其中包含来自两个表的列,并将该特定行添加到结果中,并用 NULL 填充来自左表(员工)的列。

注意:我们可以说右连接选择右表中的所有行,即使它们与左表中的行不相似。

使用 PostgreSQL 右连接进行表别名

通常,我们要连接的表将具有相似名称的列,例如 emp_id 列。

我们将使用 表别名 为连接的表分配短名称,以使命令更易于理解。

在下面的命令中,我们将使用表别名,它会返回与上面相似的结果

输出

一旦我们实现了上述命令,我们将得到以下输出

PostgreSQL Right Join

使用 USING 子句的 PostgreSQL 右连接

在本节中,我们将看到 PostgreSQL 右连接如何与 USING 子句一起使用。

例如, 上面的表 员工和部门 包含一个相似的列,即 emp_id;因此,在这种情况下,我们使用 USING 子句来获取表中的值。

在以下命令中,我们在 右连接 中使用了 USING 子句,该子句将返回值 emp_id、emp_fname、emp_lname、dept_name 和 location,因为两个表都有一个相似的列:emp_id

输出

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

PostgreSQL Right Join

使用 WHERE 子句的 PostgreSQL 右连接

如果我们想从右表(部门)中确定在左表(员工)中没有任何匹配行的行,我们可以将 WHERE 条件与 右连接 一起使用。

正如我们在以下命令中看到的那样,我们正在从表 员工部门 中选择行,其中 dept_name 等于 'RESEARCH'

输出

成功执行上述命令后,它将给出以下输出

PostgreSQL Right Join

使用 PostgreSQL 右连接连接多个表

在上一节中,我们有两个表 员工和部门,现在,如果我们要连接两个以上的表并从该特定表中获取记录。在这种情况下,我们将使用右连接。

例如,在这里我们将采用我们在 PostgreSQL 教程的 PostgreSQL 内连接部分中创建的 Jobs 表。

要查看 Jobs 表的值,我们将使用 SELECT 子句,如下所示

表 3:Jobs

PostgreSQL Right Join

我们将使用 PostgreSQL 右连接 连接三个表,例如 员工、部门和 Jobs,如下面的命令所示

输出

成功执行上述命令后,我们将给出以下结果

PostgreSQL Right Join

通过使用 PostgreSQL 右连接子句获取不匹配的记录

如果我们要获取表中与其他表没有任何相似数据行的的数据,那么在这种情况下,我们将使用 PostgreSQL 右连接子句。

正如我们在下面的示例中看到的那样,右连接子句用于识别 员工Job_descriptionNull

输出

一旦我们实现了上述命令,我们将得到以下结果

PostgreSQL Right Join

概述

PostgreSQL 右连接 部分,我们学习了以下主题

  • 我们使用了具有 表别名、USING 子句、WHERE 子句和获取不匹配数据的 PostgreSQL 右连接条件
  • 我们使用 PostgreSQL 右连接子句从两个表或更多 两个以上的表 中选择数据。