推荐答案
SELECT * FROM table1 FULL OUTER JOIN table2 ON table1.column_name = table2.column_name;
本题详细解读
什么是全外连接 (FULL OUTER JOIN)?
全外连接(FULL OUTER JOIN)是 SQL 中的一种连接方式,它返回两个表中所有匹配和不匹配的行。如果某一行在其中一个表中没有匹配的行,结果集中仍然会包含该行,并且缺失的列会用 NULL
填充。
语法结构
SELECT column1, column2, ... FROM table1 FULL OUTER JOIN table2 ON table1.column_name = table2.column_name;
SELECT
: 选择要查询的列。FROM table1
: 指定第一个表。FULL OUTER JOIN table2
: 指定第二个表,并与第一个表进行全外连接。ON table1.column_name = table2.column_name
: 指定连接条件,即两个表中用于匹配的列。
示例
假设有两个表 Employees
和 Departments
:
Employees 表:
EmployeeID | Name | DepartmentID |
---|---|---|
1 | Alice | 101 |
2 | Bob | 102 |
3 | Carol | NULL |
Departments 表:
DepartmentID | DepartmentName |
---|---|
101 | HR |
102 | IT |
103 | Finance |
使用全外连接查询:
SELECT Employees.EmployeeID, Employees.Name, Departments.DepartmentName FROM Employees FULL OUTER JOIN Departments ON Employees.DepartmentID = Departments.DepartmentID;
结果:
EmployeeID | Name | DepartmentName |
---|---|---|
1 | Alice | HR |
2 | Bob | IT |
3 | Carol | NULL |
NULL | NULL | Finance |
结果解释
Alice
和Bob
在Employees
表和Departments
表中都有匹配的行,因此它们的DepartmentName
被正确显示。Carol
在Employees
表中没有匹配的DepartmentID
,因此DepartmentName
为NULL
。Finance
部门在Departments
表中没有匹配的EmployeeID
,因此EmployeeID
和Name
为NULL
。
注意事项
- 全外连接在某些数据库系统中可能不被支持(如 MySQL),可以使用
LEFT JOIN
和RIGHT JOIN
的联合来模拟全外连接。 - 全外连接的结果集可能非常大,因为它包含了两个表中所有可能的行组合。