left join 和 left outer join 用图表 体现区别
时间: 2025-07-19 21:16:51 浏览: 3
### ### LEFT JOIN 与 LEFT OUTER JOIN 的区别
在 SQL 中,`LEFT JOIN` 和 `LEFT OUTER JOIN` 实际上是完全等价的。两者都表示左外连接,即返回左表中的所有记录,并将右表中匹配的行进行组合;若右表中没有匹配项,则对应的列值为 `NULL` [^2]。
尽管语法上可以省略 `OUTER` 关键字,但在某些数据库系统(如 Oracle)中必须显式使用 `LEFT OUTER JOIN` 来表示该操作。而在 MySQL 等系统中,`LEFT JOIN` 是标准写法,且功能与 `LEFT OUTER JOIN` 相同 [^4]。
#### 图解说明
以下图示展示了 `LEFT JOIN` 和 `LEFT OUTER JOIN` 的逻辑执行过程:
```
Table A (Left Table) Table B (Right Table)
id | name id | value
----|------ ----|-------
1 | Alice 1 | 100
2 | Bob 3 | 200
3 | Charlie 4 | 300
Result of LEFT JOIN / LEFT OUTER JOIN ON A.id = B.id
-----------------------------------------------------
id | name | id | value
---|---------|------|-------
1 | Alice | 1 | 100
2 | Bob | NULL | NULL
3 | Charlie | 3 | 200
```
从结果可以看出,左表的所有记录都被保留,而右表中未匹配的部分用 `NULL` 填充 [^1]。
#### 图形化表示
可以用如下图形表示左连接的行为:
```
┌────────────┐ ┌────────────┐
│ Table A │ │ Table B │
│ ┌───┬────┐ │ │ ┌───┬──────┐│
│ │ID │Name│ │ │ │ID │Value ││
│ └───┴────┘ │ │ └───┴──────┘│
└────┬───────┘ └────┬───────┘
│ Left Join │
│ +-----------+
↓ ↓
┌──────────────────────────────────┐
│ Result Table │
│┌───┬───────┬──────┬──────┐ │
││A.ID│A.Name│B.ID │B.Value│ │
│└───┴───────┴──────┴──────┘ │
└──────────────────────────────────┘
```
#### 总结对比
- `LEFT JOIN` 和 `LEFT OUTER JOIN` 在语义和执行结果上完全一致。
- 使用时应根据数据库系统的语法要求选择合适的形式。
- 所有左表中的数据都会被保留,即使右表中无对应记录 [^4]。
#### 示例代码
```sql
-- LEFT JOIN 示例
SELECT a.id, a.name, b.value
FROM table_a a
LEFT JOIN table_b b ON a.id = b.id;
-- LEFT OUTER JOIN 示例(与上面结果相同)
SELECT a.id, a.name, b.value
FROM table_a a
LEFT OUTER JOIN table_b b ON a.id = b.id;
```
---
阅读全文
相关推荐



















