SQL 中的 FULL JOIN

2025年6月24日 | 5 分钟阅读

在 SQL 中,有各种 SQL JOIN,其中之一是 FULL JOIN,也称为 FULL OUTER JOIN,它结合了多个表中的行。它的工作方式类似于外部连接,通过使用左连接和右连接来获取结果。它从表中获取所有行,但如果某行是空值,则会用 NULL 值填充。

它将两个表的数据连接并提供精确的视图,无论两个表的行之间是否存在匹配数据。当我们想要将数据合并到单个表中并保留所有记录时,我们使用 FULL JOIN

FULL JOIN in SQL

语法

参数

SELECT columns:SELECT 命令用于选择我们想要检索并在输出中显示的列。

FROM table1: 它用于选择左表或主表以从结果中获取数据。

FULL OUTER JOIN table2: 它结合了两个表中的所有行。如果不存在匹配,则会用 NULL 值填充该行。

ON: ON 子句是 SQL 中的一个关键字,用于指定连接条件。

common_column: 这是两个表中共同的列。

示例 1

为了更好地理解 FULL JOIN,我们使用了一个带有解释的逐步示例。

第 1 步:创建表并向其中插入数据。

创建 Cricket 表

向 Cricket 表中插入数据

从 Cricket 表中接收数据

输出

player_idteam_name
1印度
2澳大利亚
3英格兰

第 2 步:创建 Players 表并向其中插入数据。

创建 Players 表

向 Players 中插入数据

从 Players 表中接收数据

输出

player_idplayer_name年龄
1维拉特·科利35
2史蒂夫·史密斯34
6巴伯·阿扎姆30
7凯恩·威廉姆森33
8乔·鲁特34

第 3 步:执行 FULL JOIN 的查询

输出

cricket_player_idplayer_player_idteam_nameplayer_name年龄
11印度维拉特·科利35
22澳大利亚史蒂夫·史密斯34
3NULL英格兰NULLNULL
NULL6NULLKBabar Azam30
NULL7NULL凯恩·威廉姆森33
NULL8NULL乔·鲁特34

说明

在上面的示例中,我们使用 player_idCricketPlayers 之间执行 FULL JOIN 操作。FULL JOIN 返回所有球员,无论他们是否有匹配的条目。这是一种很好的方法,适用于我们想要存储双方数据的报告。

示例 2

这里我们使用另一个带有 ONWHERE 子句的 FULL JOIN 示例。

第 1 步:创建 Students 表并向其中插入数据。

创建 Students 表

向 Students 中插入数据

从 Students 表中接收数据

输出

student_idstudent_nameclass_id
1Angelina101
2Jennifer102
3里斯NULL

第 2 步:创建 Classes 表并向其中插入数据。

创建 Classes 表

向 Classes 中插入数据

从 Classes 表中接收数据

输出

class_idclass_name
101物理
103化学

第 3 步:执行 FULL JOIN 的查询

输出

student_idstudent_namestudent_class_idclass_class_idclass_name
2Jennifer102NULLNULL
3里斯NULLNULLNULL
NULLNULLNULL103化学

说明

在上面的示例中,我们使用 FULL JOIN 查询,借助 class_id 组合了 StudentsClasses 表中的所有行。这有助于识别学生被分配到无效或缺失班级的情况。我们使用 WHERE 子句来过滤匹配行、不匹配或缺失链接。

注意:PostgreSQL、Microsoft SQL Server、Oracle、IBM DB2、Amazon Redshift 和 Snowflake 等数据库支持 FULL JOIN,但 MySQL、SQLite、Google BigQuery 和 MariaDB 等数据库不支持 FULL JOIN。在不支持的数据库中,UNION 运算符用于组合左表和右表。

FULL JOIN 的应用

FULL JOIN in SQL

合并数据: 当我们需要将多个表中的所有记录包含在单个结果中时,FULL JOIN 有助于合并数据。

处理缺失数据: FULL JOIN 有助于处理缺失数据。当一个或两个表中的数据不完整或缺失时,它有助于查找和管理这些数据。

比较数据: 它有助于比较或分析来自多个表的数据。它识别数据资源之间的差异。

比较数据: 它有助于比较或分析来自多个表的数据。它识别数据资源之间的差异。

生成报告: FULL JOIN 有助于生成报告,突出显示多个表之间的不匹配或缺失记录。

结论

SQL 中的 FULL JOIN 是一种用于组合多个表中行的连接。它返回表中的所有记录,但如果某行中不存在该值,则返回 NULL 值。Full JOIN 有助于合并数据、处理缺失数据和比较数据。


下一个主题SQL 交叉连接