推荐答案
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的联合来模拟全外连接。 - 全外连接的结果集可能非常大,因为它包含了两个表中所有可能的行组合。