`FULL OUTER JOIN` 是 SQL 中的一种连接操作,它返回左表(`LEFT TABLE`)和右表(`RIGHT TABLE`)中所有匹配的行,以及两个表中不匹配的行。如果某一边没有匹配,那么结果中该边的字段将包含 `NULL` 值。
### SQL `FULL OUTER JOIN` 语法
```sql
SELECT column_names
FROM table1
FULL OUTER JOIN table2
ON table1.common_field = table2.common_field;
```
- `column_names` 是你想要从两个表中选择的列名。
- `table1` 和 `table2` 是你想要连接的两个表。
- `common_field` 是两个表中用于匹配的共同字段。
### 代码示例
假设我们有两个表:`employees` 和 `departments`。
**employees 表**:
```plaintext
+----+----------+
| id | name |
+----+----------+
| 1 | John |
| 2 | Jane |
| 3 | Mike |
+----+----------+
```
**departments 表**:
```plaintext
+----+------------+
| id | department |
+----+------------+
| 1 | Sales |
| 2 | Marketing |
| 4 | IT |
+----+------------+
```
现在,我们想要找出 `employees` 表和 `departments` 表中所有的 `id`,包括那些在其中一个表中存在而在另一个表中不存在的 `id`。
```sql
SELECT employees.id, employees.name, departments.department
FROM employees
FULL OUTER JOIN departments
ON employees.id = departments.id;
```
这个查询的结果将是:
```plaintext
+----+----------+------------+
| id | name | department |
+----+----------+------------+
| 1 | John | Sales |
| 2 | Jane | Marketing |
| 3 | Mike | NULL |
| 4 | NULL | IT |
+----+----------+------------+
```
在这个结果中,`Mike` 没有对应的部门,所以 `department` 列是 `NULL`。同样,`IT` 部门没有对应的员工,所以 `name` 和 `id` 列是 `NULL`。
请注意,不是所有的数据库系统都支持 `FULL OUTER JOIN`。例如,MySQL 不支持 `FULL OUTER JOIN`,但你可以通过组合 `LEFT JOIN` 和 `RIGHT JOIN` 以及使用 `UNION` 来实现相同的结果。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。