PostgreSQL Cross Join交叉连接

在本节中,我们将了解PostgreSQL Cross join的工作原理,它允许我们在两个或多个表中创建行的笛卡尔积。我们还学习了如何使用表别名、WHERE 子句,以及在PostgreSQL Cross Join 子句的帮助下连接多个表。

什么是 PostgreSQL Cross Join交叉连接?

PostgreSQL Cross Join用于组合多个表的所有可能性并返回输出,其中包含所有选定表中的每一行。CROSS JOIN,进一步称为CARTESIAN JOIN,它允许我们生成所有相关表的笛卡尔积。

笛卡尔积可以描述为第一个表中的所有现有行乘以第二个表中的所有行。它与Inner Join平行,其中连接条件不存在于此子句中。

下面的维恩图展示了PostgreSQL 的 Cross Join,我们很容易理解Cross Join返回的是Table1 和 Table2的所有记录,每一行都是两个表的行的分组。

PostgreSQL 交叉连接语法

Cross-Join关键字与SELECT命令一起使用,必须写在FROM关键字之后。以下语法用于从两个关联表中获取所有数据:

语法1

SELECT column-lists    
FROM Table1    
CROSS JOIN Table2;    

语法2

下面的语法类似于上面的语法,因为我们没有使用 Cross Join 关键字:

SELECT [column_list|*]  
FROM Table1, Table2;  

语法3

在这里,我们可以使用一个 INNER JOIN 子句,其条件总是分析交叉连接的精确副本:

SELECT *  
FROM Table1  
INNER JOIN Table2 ON true;  

在上面的语法中,我们有以下参数:

范围 描述
Column-lists column-list 用于指定我们要返回的列或字段的名称。
Table1 and Table2 这些是我们从中获取记录的表名。

PostgreSQL Cross Join交叉连接示例

让我们看一个示例来了解PostgreSQL 交叉连接的工作原理:

使用 PostgreSQL Cross Join 连接两个表

为此,我们将使用我们在PostgreSQL 教程的 PostgreSQL 全连接部分创建的Summer_fruits 和 Winter_fruits表。

表 1:Summer_fruits

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

Select * from Summer_fruits;

执行上面的命令后,我们会从Summer_fruits表中获取数据:

表 2:Winter_fruits

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

Select * from Winter_fruits;  

 执行完上面的命令后,我们会从Winter_fruits表中获取数据:

我们将执行以下命令以从两个表(Summer_fruits 和 Winter_fruits)中获取所有记录:

SELECT *  
FROM Summer_fruits   
CROSS JOIN Winter_fruits ;  

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

当执行CROSS-JOIN命令时,我们将看到它显示 42 行,这意味着 Summer_fruites 表中的六行乘以Winter_fruits 表中的七行。

热门文章

优秀文章