PostgreSQL Left Join2025年3月17日 | 阅读 7 分钟 在本节中,我们将了解ostgreSQL 左连接的工作原理,它用于从左表中返回数据。我们还将学习如何使用表别名、WHERE 子句、USING 子句以及使用 PostgreSQL 左连接子句连接多个表。 什么是 PostgreSQL 左外连接或左连接子句?PostgreSQL LEFT JOIN 或左外连接用于从左表返回所有行以及来自其他表的行,如果 ON 条件中定义的连接条件得到满足。并且,如果未从右表找到相应的记录,它将返回null。 左连接也可以称为左外连接子句。因此,Outer 是在左连接中使用的可选关键字。在 PostgreSQL 中,左连接与内连接条件并行。 以下维恩图显示了 PostgreSQL 左连接,我们可以轻松理解左连接从左表返回所有数据以及来自右表的相似数据: ![]() PostgreSQL 左连接语法Left Join 关键字与 SELECT 命令 一起使用,并且必须写在 FROM 关键字之后。 在以上语法中,table1 指的是左表,而 table2 指的是右表,这意味着特定条件将从 table1 返回所有记录,并根据定义的连接条件从 table2 返回匹配的记录。 我们将按照以下步骤使用 Left 或 Left Outer Join 条件连接左表和右表
PostgreSQL 左连接示例让我们看一个例子来了解 PostgreSQL 左连接的工作原理 使用 PostgreSQL 左连接连接两个表为此,我们将使用 CREATE 命令创建两个名为 Client 和 Orders 的表,并使用 INSERT commandM 插入一些值。 首先,我们将使用 CREATE 命令创建 Client 和 Orders 表 以下命令用于创建 Orders 表 在执行上述命令后,已成功创建 Client 和 Orders 表。 一旦生成了两个表,我们就准备好使用 INSERT 命令插入一些值,如下所示 在下面的命令中,我们在 Orders 表中插入值 在创建并向 Client 和 Orders 表中插入值后,我们将通过执行以下命令获得以下输出 表 1:Client 输出 ![]() 表 2:Orders 输出 在执行上述命令后,我们将从 Orders 表中获取数据 ![]() 以下查询用于从两个表(Client 和 Orders)中选择记录 或者,我们在上述查询中用 Left Outer Join 关键字 替换 Left Join 关键字,因为两者都会给出类似的输出 输出 一旦我们实现了上述命令,我们将获得以下结果 ![]() 注意:当 Client 表中的某一行在 Orders 表中没有匹配的行时,不匹配行的 order_date 和 price 列的值将为 NULL。PostgreSQL 左连接的工作原理
使用 PostgreSQL 左连接进行表别名我们将使用表别名为已连接的表分配短名称,以使命令更易于理解。 通常,我们要连接的表将具有名称相似的列,例如 Client_id 列。在下面的命令中,我们将使用表别名,它会返回与上面类似的结果 输出 一旦我们实现了上述命令,我们将得到以下输出 ![]() 使用 USING 子句的 PostgreSQL 左连接在本例中,我们将看到 PostgreSQL 左连接如何与 USING 子句一起使用。 这两个表 (Client 和 Orders) 都包含相似的列名 Client_id;这就是我们可以使用 USING 子句从表中获取值的原因。 在下面的示例中,我们在 Left join 中使用 USING 子句,它将返回值 Client_id、Client_name、Client_prof、price 和 order_date,因为两个表具有相似的 Client_id 列。 输出 执行上述语句后,我们将获得以下结果 ![]() 使用 WHERE 子句的 PostgreSQL 左连接在这里,WHERE 子句允许我们返回过滤结果。并且我们也可以将 WHERE 条件与 Left join 一起使用。 在下面的示例中,我们将从两个表 Client 和 Orders 中选择行,其中 client_qualification 等于 MBA: 输出 成功执行上述命令后,它将给出以下输出 ![]() PostgreSQL LEFT JOIN 中 WHERE 和 ON 子句之间的区别我们可以看到以下命令以了解 PostgreSQL 左连接中 WHERE 和 ON 子句之间的区别。 在左连接中,WHERE 和 ON 子句给我们不同的输出。 首先,我们使用带有左连接的 WHERE 子句,正如我们可以在下面的命令中看到的那样 输出 一旦我们实现了上述查询,我们将获得以下输出 ![]() 现在,我们使用带有左连接的 ON 子句,正如我们可以在下面的命令中看到的那样 输出 执行上述命令后,我们将获得以下结果 ![]() 注意:在 PostgreSQL 中,如果我们使用命令中的 WHERE 和 ON 子句,则内连接将始终返回类似的输出。使用 PostgreSQL LEFT JOIN 连接多个表在上一节中,我们已经创建了两个表,即 Client 和 Orders。现在,我们使用 Left join 来组合不同的表并从特定表中获取记录。 因此,我们将使用 CREATE 命令创建另一个表作为 Clieint_ details,正如我们可以在以下命令中看到的那样 成功创建 Clieint_ details 表后,我们将使用 INSERT 命令向其中插入一些值,正如我们可以在以下命令中看到的那样 在创建并插入 Client_details 表中的值之后,我们将通过执行以下命令获得以下输出 表 3:Client_details ![]() 现在,我们将使用 PostgreSQL Left Join 连接多个表,例如 Client、Orders 和 Client_details,正如我们可以在以下语句中看到的那样 输出 成功执行上述命令后,我们将给出以下结果 ![]() 使用 PostgreSQL LEFT JOIN 子句获取不匹配的记录如果我们想从表中获取数据,该表不包含来自另一个表的任何相似数据行,因此在这种情况下,我们将使用 PostgreSQL LEFT JOIN 子句。 正如我们在下面的示例中看到的那样,LEFT JOIN 子句用于标识没有 Mobile_number 的 client 输出 一旦我们实现了上述命令,我们将获得以下结果 ![]() 下一个主题PostgreSQL 右连接 |
我们请求您订阅我们的新闻通讯以获取最新更新。