SQL_Join
在 SQL 中,JOIN 用于将两个表的数据合并查询,主要有三种常见的连接方式:
1. INNER JOIN(内连接)
只返回两个表中满足连接条件的匹配数据。
不匹配的数据不会出现在结果集中。
📌 示例
1 | SELECT A.*, B.* FROM A INNER JOIN B ON A.id = B.a_id; |
结果:
- 仅包含
A和B中id = a_id匹配的行。
2. LEFT JOIN(左连接)
返回左表的所有数据,即使右表中没有匹配的数据。
右表中没有匹配的数据时,对应的列会填充
NULL。
📌 示例
1 | SELECT A.*, B.* |
结果:
- 以
A表为主,B中没有匹配的行会显示NULL。
3. RIGHT JOIN(右连接)
返回右表的所有数据,即使左表中没有匹配的数据。
左表中没有匹配的数据时,对应的列会填充
NULL。
📌 示例
1 | SELECT A.*, B.* |
结果:
- 以
B表为主,A中没有匹配的行会显示NULL。
总结对比
| JOIN 类型 | 结果集包含的数据 | 可能的 NULL 出现位置 |
|---|---|---|
INNER JOIN |
两表匹配的数据 | 无 |
LEFT JOIN |
左表全部数据,匹配的右表数据(不匹配填 NULL) | 右表 |
RIGHT JOIN |
右表全部数据,匹配的左表数据(不匹配填 NULL) | 左表 |
示例数据
| A (id, name) | B (a_id, score) |
|---|---|
| 1, ‘Alice’ | 1, 85 |
| 2, ‘Bob’ | 3, 90 |
| 5, ‘Charlie’ | 4, 78 |
执行不同 JOIN 的结果:
1️⃣ INNER JOIN
1 | SELECT A.*, B.* |
| id | name | a_id | score |
|---|---|---|---|
| 1 | Alice | 1 | 85 |
2️⃣ LEFT JOIN
1 | SELECT A.*, B.* |
| id | name | a_id | score |
|---|---|---|---|
| 1 | Alice | 1 | 85 |
| 2 | Bob | NULL | NULL |
| 5 | Charlie | NULL | NULL |
3️⃣ RIGHT JOIN
1 | SELECT A.*, B.* |
| id | name | a_id | score |
|---|---|---|---|
| 1 | Alice | 1 | 85 |
| NULL | NULL | 3 | 90 |
| NULL | NULL | 4 | 78 |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 梦始!
评论
