网站首页 网站地图
网站首页 > 游戏秘籍 > full join用法

full join用法

时间:2026-04-01 18:43:58

在 SQL 中,FULL JOIN 是一种联合查询,用于返回两个表中所有匹配的行,即使其中一个表中没有匹配的行FULL JOIN 的作用是保留两个表中的所有记录,即使没有匹配。

✅ 一、FULL JOIN 的基本语法

SELECT *
FROM table1
FULL JOIN table2
ON table1.column = table2.column;
  • table1table2 是两个表。
  • ON 子句指定连接的条件。
  • FULL JOIN 会返回两个表中所有行,即使没有匹配。

✅ 二、FULL JOIN 的返回结果

表1 表2 是否匹配
A B 匹配
A NULL 不匹配
NULL B 不匹配
NULL NULL 都不匹配

✅ 三、FULL JOINLEFT JOINRIGHT JOIN 的对比

连接类型 返回的行数 是否保留没有匹配的行
LEFT JOIN 所有表的行 是(保留左表的所有行)
RIGHT JOIN 所有表的行 是(保留右表的所有行)
FULL JOIN 所有表的行 是(保留两个表的所有行)

✅ 四、使用场景

  • 你想要同时查看两个表的所有数据,即使没有匹配。
  • 例如:employeesdepartments 表,即使某部门没有员工,也要显示该部门的信息。

✅ 五、示例

表结构

CREATE TABLE employees (
    id INT PRIMARY KEY,
    name VARCHAR(100)
);

CREATE TABLE departments (
    dept_id INT PRIMARY KEY,
    dept_name VARCHAR(100)
);

示例数据

INSERT INTO employees (id, name) VALUES
(1, 'Alice'), (2, 'Bob'), (3, 'Charlie');

INSERT INTO departments (dept_id, dept_name) VALUES
(1, 'HR'), (2, 'IT'), (3, 'Sales');

查询 FULL JOIN

SELECT *
FROM employees
FULL JOIN departments
ON employees.id = departments.dept_id;
id name dept_id dept_name
1 Alice 1 HR
2 Bob 2 IT
3 Charlie 3 Sales
NULL NULL 1 HR
NULL NULL 2 IT
NULL NULL 3 Sales


---

## ✅ 六、注意点

- `FULL JOIN` 是 SQL 标准中的语法,但某些数据库(如 MySQL、PostgreSQL)可能支持,而某些数据库(如 SQL Server)可能需要使用 `FULL OUTER JOIN`。
- 如果你使用的是 MySQL,可以使用 `FULL OUTER JOIN`,但语法是相同的。

---

## ✅ 七、总结

| 术语 | 说明 |
|------|------|
| `FULL JOIN` | 返回两个表中所有行,包括没有匹配的行 |
| `LEFT JOIN` | 保留左表的所有行,右表没有匹配的行会显示为 `NULL` |
| `RIGHT JOIN` | 保留右表的所有行,左表没有匹配的行会显示为 `NULL` |
| `FULL JOIN` | 保留两个表的所有行,没有匹配的行也会显示为 `NULL` |

---

如需进一步了解 `FULL JOIN` 的应用场景或与其他连接类型对比,欢迎继续提问!