SQL FULL OUTER JOIN

17 Mar 2025 | 4 分钟阅读

本文将通过简单易懂的示例,清晰地解释 FULL OUTER JOIN 操作符。在进入主题之前,让我们先简要了解一下 FULL OUTER JOIN 操作符。

什么是 FULL OUTER JOIN 操作符?

Full outer join 是一种 join 操作,它合并两个表的结果集,包括两个表中匹配和不匹配的行。当两个表都匹配请求的 join 条件时,将返回两个表中的所有行,如果两个表之间没有匹配项,则将使用 NULL 值填充不匹配表的列。下面介绍了 full outer join 操作的功能。

SQL FULL OUTER JOIN

语法

下面是 full outer join 操作的基本语法,其中每一项都已解释:

这里 table 1 和 table 2 是需要根据特定条件连接的两个表。

匹配的行:当 table1 中的一行根据 join 条件与 table2 中的一行匹配时,两个表的列都包含在结果集中。

table 1 中的不匹配行:如果 table 1 中的某一行没有匹配项,则使用 NULL 值填充 table 2 的列。

table 2 中的不匹配行:如果 table 2 中的某一行没有匹配项,则使用 NULL 值填充 table 1 的列。

让我们看几个例子来清楚地理解 full outer join 操作的功能。

示例 1

考虑 Student 和 Department 两个表来演示 Full Outer Join 操作符的功能。首先,让我们创建这两个表并插入值。

现在,我们将向此表插入值。

Student 表将显示如下:


ID名称总分联系电话
1Ram5009127563212
2Joseph4768123456782
3Rehman3899814569871
4Priyanka4507891234561
5Saleem5347765123456
6Dhanush5508877123590

现在,我们将创建 Department 表。

现在,我们将向其中插入值。

Department 表将显示如下:


IDdepartment_namedepartment_id
2CSE122
3ECE123
4IT126

让我们使用 Full Outer Join 操作符连接这两个表。

输出

ID名称总分department_name
1Ram500NULL
2Joseph476CSE
3Rehman389ECE
4Priyanka450IT
5Priyanka450NULL
6Saleem534NULL

示例 2

考虑以下两个表:Student 和 Student Joining。

Roll_nonamedepartment
134AnishCSE
135RahulECE
136SmithaIT
137Ganesh机械
138ArunEEE

表:Student

Roll_no入学号入职日期
134AS12323-11-2020
136AS12621-08-2021
137AS12721-08-2021

表:Student_joining

现在,我们将使用 Full Outer join 操作符连接这两个表。

输出

Roll_noname入学号入职日期
134AnishAS12323-11-2020
135RahulNULLNULL
136SmithaAS12621-08-2021
137GaneshAS12721-08-2021
138ArunNULLNULL

示例 3

假设有两个表 product 和 product_category。

product_idproduct_namecategory_id
1笔记本电脑22
2Shirt24
3牛仔裤24
4移动端22
525

表:product

product_id类别
2服装
5固定不变(Stationary)

表:product_category

让我们根据 product_id 使用 FULL OUTER JOIN 操作符组合这两个表。

结果集将是:

输出

product_idproduct_name类别
1笔记本电脑NULL
2Shirt服装
3牛仔裤NULL
4移动端NULL
5固定不变(Stationary)

带 WHERE 子句的 FULL OUTER JOIN

在上面的示例中,我们仅使用了 ON 子句连接了两个表,但是可以使用 WHERE 子句过滤表记录,即 FULL OUTER JOIN 可以与 WHERE 子句一起使用,根据特定条件连接数据。

下面提供了带 WHERE 子句的 FULL OUTER JOIN 操作符的语法。

观察下面的示例,以清晰地了解如何使用带 WHERE 子句的 FULL OUTER JOIN 操作符根据特定条件连接表。

示例 4

考虑以下两个表 employee 和 department,以了解如何根据特定条件连接两个表。

emp_idemp_namesalary
45Ramesh22000
46Rahim20000
47Sruthi30000
48Swetha35000
50Priyanka50000
51Anjali40000

表:employee

emp_iddepartment_namedepartment_id
45HR33
47开发35
48市场部36
51R&D39

表:department

现在,我们将执行以下命令,根据工资大于 25000 的条件连接上述两个表。

结果集将显示如下:

输出

emp_idemp_namesalarydepartment_name
47Sruthi30000开发
48Swetha35000市场部
51Anjali40000R&D

以上就是 FULL OUTER JOIN 操作功能的全部内容。本文通过有效且合适的示例,清晰地解释了 FULL OUTER JOIN 操作符。


下一主题SQL NOT IN