PostgreSQL INNER Join

17 Mar 2025 | 6 分钟阅读

在本节中,我们将了解 PostgreSQL inner join 的工作原理,它用于从多个表中选择数据。我们还将学习如何在 PostgreSQL inner join 中使用 WHERE 子句、USING 子句、运算符以及连接三个表,表别名

什么是 PostgreSQL INNER JOIN 子句?

在关系数据库中,数据自然分布在多个表中,为了选择聚合数据,我们经常需要从多个表中选择数据。

PostgreSQL Inner Join 用于仅返回表中与定义条件等效的那些记录,并隐藏其他行和列。在 PostgreSQL 中,它作为默认 Join,因此没有必要在查询中使用 Inner Join 关键字。

以下 Venn 图显示了 PostgreSQL inner join,我们可以很容易地理解 Inner Join 仅返回 Table1 和 Table2 中匹配的记录

PostgreSQL INNER Join

PostgreSQL Inner Join 语法

Inner Join 关键字与 SELECT 命令一起使用,必须写在 FROM 子句之后。

以下语法更清楚地描述了它

PostgreSQL Inner Join 与 USING 子句的语法

PostgreSQL inner Join 与 WHERE 子句的语法

我们将按照以下步骤将 Table A 与 Table B 连接起来

  • 首先,我们将定义两个表(表 1 和表 2)的 列列表,我们希望在 SELECT 条件中选择数据。
  • 然后,我们将定义基本表,它是 FROM 子句中的表 1。
  • 最后,我们将在 INNER JOIN 条件中描述第二个表(表 2),并在 ON 关键字后编写 join 条件。

注意:Join 条件返回 Inner 条件中描述的表之间的相似行。

PostgreSQL Inner join 示例

让我们看一个例子来了解 PostgreSQL inner join 的工作原理

使用 PostgreSQL INNER JOIN 连接两个表

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

首先,我们将使用 CREATE 命令创建 Employee 和 department

以下命令用于创建 Department

在执行上述命令后,已经成功创建了 Employee 和 department 表。

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

在以下命令中,我们将值插入到 department 表中

在创建和插入 Employee 和 department 表中的值后,我们将获得以下输出

表 1:Employee

PostgreSQL INNER Join

表 2:department

PostgreSQL INNER Join

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

输出

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

PostgreSQL INNER Join

PostgreSQL inner join 的工作原理

  • Inner Join 用于分析 Table1 (Employee) 中的每一行,并将 emp_id 列中的值与 Table2 (department) 中每一行的 dept_id 中的值进行比较。
  • 如果这些记录相似,则 inner Join 会创建一个新行,其中包含两个表中的列,并将特定行增强到输出中。
  • 或者,如果这些记录不相似,则 inner Join 会忽略它们并移动到下一行。

PostgreSQL inner Join 的表别名

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

如果我们在命令中引用来自不同表的具有相似名称的列,则会发生错误,为了避免此特定错误,我们需要使用以下语法。

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

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

输出

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

PostgreSQL INNER Join

PostgreSQL inner join 与 USING 子句

在这里,我们将看到 PostgreSQL inner join 如何与 USING 子句一起使用,因为有时两表中列的名称相似;这就是为什么我们可以使用 USING 子句来获取值。

在以下示例中,我们正在使用 USING 子句,因为两个表都具有相似的 emp_id 列。

输出

执行上述语句后,我们将获得以下结果

PostgreSQL INNER Join

PostgreSQL inner join 使用 WHERE 子句

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

在以下示例中,我们将从 Employeedepartment 两个表中选择行,其中 dept_name 等于 Sales

输出

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

PostgreSQL INNER Join

使用 PostgreSQL INNER JOIN 连接三个表

在本教程的上述部分中,我们已经创建了两个表,分别是 Employeedepartment。现在,我们想再连接一个表,并借助 Inner join 从该特定表中获取记录。

因此,为此,我们将使用 CREATE 命令再创建一个表 Jobs,我们可以在以下命令中看到

一旦成功创建了 Jobs 表,我们将借助 INSERT 命令将一些值插入其中,我们可以在以下命令中看到

创建和插入 Jobs 表中的值之后,我们将获得以下输出

表 3:Jobs

PostgreSQL INNER Join

以下命令用于连接三个表,例如 Employee, department, 和 Jobs。因此,我们将在 第一个 INNER JOIN 子句之后使用 第二个 INNER JOIN 子句

输出

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

PostgreSQL INNER Join

注意:要连接三个以上的表,我们可以使用上述方法。

PostgreSQL Inner Join 使用运算符

PostgreSQL 允许许多运算符,我们可以将这些运算符与 Inner Join 一起使用,例如 等于 (=)、不等于 (!=)、大于 (>)、小于 (<) 等。

在以下示例中,我们正在使用不等于 (!=) 运算符与 inner join 一起使用

输出

单击 执行 按钮后,我们将获得以下输出,其中显示了那些 dept_name 不等于 SALES 的值。

PostgreSQL INNER Join

概述

PostgreSQL inner join 部分,我们学习了以下主题

  • 我们使用了 PostgreSQL inner join 子句从两个或多个两个以上的表中选择数据。
  • 我们将 PostgreSQL inner join 条件与 WHERE 子句、USING 子句、运算符和表别名 一起使用。