left outer join 和left join 的区别
时间: 2025-01-21 19:20:49 浏览: 109
### SQL `LEFT JOIN` 与 `LEFT OUTER JOIN` 的区别及用法
在SQL中,`LEFT JOIN` 和 `LEFT OUTER JOIN` 是用于执行左外连接的关键字。这两种操作符的结果一致,在所有主流数据库系统(如 MySQL、SQL Server、PostgreSQL、Oracle 等)中被认为是同义词[^4]。
#### 定义与功能
- **定义**: 左外连接会返回左表中的所有记录以及右表中存在的匹配项;即使右表中不存在对应的记录,最终结果集中也会保留来自左表的数据行,并且这些行对应于右表的位置会被填充为 NULL 值。
- **语法示例**:
```sql
SELECT *
FROM table_left AS L
LEFT JOIN table_right AS R ON L.id = R.left_id;
```
此语句可以替换为带有 `OUTER` 关键字的形式而不改变其逻辑含义:
```sql
SELECT *
FROM table_left AS L
LEFT OUTER JOIN table_right AS R ON L.id = R.left_id;
```
两种写法都将获取左侧表格的所有条目并尝试找到右侧表格内的相应配对。当找不到匹配时,右边部分将被设置为空值(NULL)[^3]。
#### 实际应用案例分析
考虑如下场景:有一个机构表 (`t_institution`) 和柜员表(`t_teller`) ,其中通过 `inst_no` 字段建立关系。为了展示所有的机构及其所属的柜员信息(即便某些机构暂时还没有分配任何柜员),可采用以下查询方式之一来实现目标:
```sql
-- 使用 LEFT JOIN
SELECT * FROM t_institution i
LEFT JOIN t_teller t ON i.inst_no = t.inst_no;
-- 或者使用 LEFT OUTER JOIN, 效果相同
SELECT * FROM t_institution i
LEFT OUTER JOIN t_teller t ON i.inst_no = t.inst_no;
```
上述两条命令均能正确地提取所需数据集合,即包含全部机构列表加上各自关联的柜员详情(如果有)。对于那些尚未指派具体工作人员的情况,则会在相应的字段位置显示 null 表示缺失的信息[^2]。
阅读全文
相关推荐


















