PostgreSQL Full Join全连接

在本节中,我们将了解PostgreSQL Full join的工作原理,它用于在左表或右表记录匹配时返回所有记录。我们还学习了如何在PostgreSQL Full Outer join 子句的帮助下使用表别名、WHERE子句。

什么是 PostgreSQL Full Join 或 Full Outer Join 子句?

PostgreSQL Full Join或Full Outer Join用于在左表或右表记录匹配时返回所有记录。Full Outer Join的主要目标是它将PostgreSQL Left JoinPostgreSQL Right Join子句的结果结合起来,并从连接子句两侧的表中返回所有相似或不匹配的行。

下面的维恩图展示了PostgreSQL Full Outer Join,我们很容易理解Full Outer Join返回的是Left table和Right table的所有数据:

PostgreSQL Full Join全连接的语法

Full Outer Join 或 Full Join 的语法如下:

SELECT columns    
FROM table1    
FULL [OUTER] JOIN table2    
ON table1.column = table2.column;    

上述语法中,Full Outer Join关键字与SELECT 命令一起使用,必须写在FROM关键字之后, OUTER关键字是可选的。

我们将按照以下步骤在Full Join 或 Full Outer Join条件的帮助下合并Left 表和 Right 表:

  • 首先,我们将从两个表中定义列列表,我们要在SELECT条件中选择数据。
  • 然后,我们将指定右表,即FROM子句中的表 2 。
  • 最后,我们将描述Left表,即Full Outer Join子句中的表1,并将连接条件写在ON关键字之后。

PostgreSQL Full Join全连接示例

让我们看一个例子来理解PostgreSQL 全外连接是如何工作的:

使用 PostgreSQL Full Outer Join 连接两个表

为此,我们将在 CREATE 命令的帮助下创建两个名为Summer_fruits和Winter_fruits的表,并使用 INSERT 命令插入一些值。

首先,我们将使用 CREATE 命令创建Summer_fruits和Winter_fruits表:

CREATE TABLE Summer_fruits (  
SF_ID INT PRIMARY KEY,  
Summer_fruits_name VARCHAR (250) NOT NULL);  

下面的命令用于创建Winter_fruits表:

CREATE TABLE Winter_fruits (  
WF_ID INT PRIMARY KEY,  
Winter_fruits_name VARCHAR (250) NOT NULL);  

执行上述命令, Summer_fruits和Winter_fruits表已成功创建。

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

INSERT INTO Summer_fruits (SF_ID, Summer_fruits_name)  
VALUES VALUES(1,'Mango'),  
(2,'Watermelon'),  
(3,'Apples'),   
(4,'Guava'),  
(5,'Pineapple'),  
(6,'Musk Melon');  

在下面的命令中,我们将值插入到Winter_fruits表中:

INSERT INTO Winter_fruits (WF_ID, Winter_fruits_name)  
VALUES(1,'Grape'),  
(2,'Apples'),   
(3,'Mango'),  
(4,'Pears'),  
(5,'Pineapple'),  
(6,'Cranberries'),  
(7,'Bananas');  

在Summer_fruits 和 Winter_fruits表中创建并插入值后,我们将在执行以下命令时获得以下输出:

表 1:Summer_fruits

Select * from Summer_fruits;  

表 2:Winter_fruits

Select * from Winter_fruits;  

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

以下查询用于从两个表(Summer_fruits和Winter_fruits)中选择记录:

SELECT SF_ID, Summer_fruits_name, WF_ID, Winter_fruits_name  
FROM Summer_fruits  
FULL JOIN Winter_fruits  

或者我们在上面的查询中使用Full Outer Join 关键字代替Full Join 关键字,我们将得到类似的输出:

ON SF_ID = WF_ID;  
SELECT SF_ID, Summer_fruits_name, WF_ID, Winter_fruits_name  
FROM Summer_fruits  
Full Outer Join Winter_fruits  
ON SF_ID = WF_ID;  

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

热门文章

优秀文章