PostgreSQL Self Join17 Mar 2025 | 4 分钟阅读 在本节中,我们将了解 PostgreSQL 自连接的工作原理,它用于关联同一表中的行。我们还学习了如何借助 PostgreSQL 自连接子句从相似的表中获取分层数据。 什么是 PostgreSQL 自连接?在 PostgreSQL 中,我们有一种特殊的连接类型,称为 自连接。 "PostgreSQL 自连接用于完全设置相似表的不同名称,我们也可以使用别名。 要执行自连接,我们将使用不同的表别名定义相似表两次,并在 ON 关键字后给出连接谓词。 在实际应用中,我们使用自连接来比较同一表中的行 (因为 PostgreSQL 中不允许比较相似的表名),并获取分层数据。 注意:没有自连接这样的关键字;但是,我们可以借助别名使用 PostgreSQL 内连接、左连接、右连接。PostgreSQL 自连接语法在 PostgreSQL 中,我们有不同的自连接语法,如下所示 语法 1 在下面的语法中,我们使用一个 内连接关键字, 它将表与自身组合起来 在上面的语法中,table_name 借助 PostgreSQL INNER JOIN 子句组合在一起。 语法 2 在下面的语法中,我们使用 左连接关键字,它将表与自身组合起来 在上面的语法中,table_name 借助 PostgreSQL LEFT JOIN 子句与自身组合在一起。 Syntax3 在下面的语法中,我们使用 右连接关键字,它将表与自身组合起来 在上面的语法中,table_name 借助 PostgreSQL RIGHT JOIN 子句与自身组合在一起。 PostgreSQL 自连接示例让我们看一个示例,了解 PostgreSQL 自连接是如何工作的 从表中获取分层记录的示例为此,我们将创建一个示例数据库,然后借助 CREATE 命令创建一个名为 Customer 的表,并使用 INSERT 命令插入一些值。 首先,我们将创建 一个示例数据库,就像我们在 PostgreSQL 教程的早期部分中创建的那样,或者参考下面的链接来了解如何在 PostgreSQL 中创建一个数据库 现在,我们将按照以下步骤在 pgadmin4 中创建一个数据库
数据库 → 创建 → 数据库 ![]()
![]()
![]() 成功创建 Origination database 后,我们将使用 CREATE 命令创建 Customer 表,我们可以在下面的语句中看到 现在,我们将借助 INSERT 将一些客户记录插入到 Customer 表中,我们可以在下面的语句中看到 在 Customer 表中创建并插入值后,在执行以下命令时,我们将获得以下输出 输出 ![]() 在 Customer 表中,Order_id 列引用 Customer_id 列。Order_id 列中的值显示客户购买的订单。 如果 Order_id 列中的值为 Null,则客户未购买任何东西。 正如我们在下图中看到的那样,整体层次结构如下所示 ![]() 在下面的示例中,我们将获取谁在 Customer 表中使用自连接购买的数据 输出 在实现上述命令后,我们将获得以下结果 ![]() 正如我们在上面的输出表中观察到的那样,Customer 表执行了两次,一次作为 Customer,另一次作为 Orders。 在上面的命令中,我们使用 表别名,例如 c 用于 customer,o 用于 Orders。 并且 连接谓词 借助 Customer_id 和 Orders_id 列中的相似值来标识 Customer/Orders 对。 注意:Order_id 为 Null 的客户 (Mia Rodriguez) 不会出现在结果中。我们将使用 LEFT JOIN 代替 INNER JOIN 子句,以便使用以下命令在输出表中包含顶级 Order 输出 执行上述命令后,我们将获得以下输出 ![]() 概述 在 PostgreSQL 自连接部分,我们学习了以下主题
下一主题PostgreSQL 自然连接 |
我们请求您订阅我们的新闻通讯以获取最新更新。