mybatis多表关联查询 join 和left join 有什么区别
时间: 2025-03-05 15:37:58 浏览: 31
### MyBatis 中 Join 和 Left Join 的区别
在数据库查询中,`JOIN` 和 `LEFT JOIN` 是用于连接多个表的关键字,在 MyBatis 进行多表关联查询时也广泛应用这两种方式。
#### Join 关键字
当使用 `JOIN`(内联接)时,只有那些满足连接条件的记录才会被返回。这意味着两个表中的匹配项都存在的情况下才会有结果输出。对于不满足条件的数据,则不会显示出来[^1]。
```sql
SELECT t.id, t.no, t.type
FROM demo t
JOIN demo2 t1 ON (t.demo2id = t1.id AND t.type = 2)
WHERE t.deleted = 0;
```
这段 SQL 将仅展示 `demo` 表中有对应 `demo2` 记录且类型等于 2 并未删除的所有条目。
#### Left Join 关键字
而采用 `LEFT JOIN`(左外联接),即使右侧表没有相配对的信息也会保留左侧表所有的原始数据,并将右边不符合条件的部分字段填充为 NULL 值来表示缺失值[^3]。
```sql
SELECT t.id, t.no, t.type, t1.name AS demo2Name
FROM demo t
LEFT JOIN demo2 t1 ON (t.demo2id = t1.id AND t.type = 2)
WHERE t.deleted = 0;
```
此语句会列出所有符合条件 (`type=2`) 或者已被标记为已删除之外的所有 `demo` 条目的 ID 号码及其编号和类别;同时还会尝试获取相应的名称来自另一个表格(`demo2`)。如果没有找到合适的关联对象,则这些额外列将会为空(null)。
通过上述对比可以看出:
- **Join**: 返回的是两张或多张表之间的交集部分;
- **Left Join**: 不仅仅限于共同存在的记录,还包括左边那张表里独有的全部内容。
因此,在实际开发过程中应根据业务逻辑的需求选择合适类型的联结方法来进行有效的多表联合检索操作。
阅读全文
相关推荐


















