温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

左连接和内连接差异

发布时间:2026-11-02 17:39:57 来源:亿速云 阅读:103 作者:小樊 栏目:数据库

在 SQL 中,左连接(LEFT JOIN)和内连接(INNER JOIN)是最常见的两种表连接方式,核心差异在于是否保留“左表中没有匹配到的数据”。


一、基本概念

1. INNER JOIN(内连接)

  • 只返回两表中能匹配上的数据
  • 只要某一行在另一个表中找不到对应记录,就会被丢弃
SELECT *
FROM A
INNER JOIN B ON A.id = B.a_id;

✅ 结果:A ∩ B


2. LEFT JOIN(左连接)

  • 返回左表的所有数据
  • 如果右表没有匹配,右表字段用 NULL 填充
SELECT *
FROM A
LEFT JOIN B ON A.id = B.a_id;

✅ 结果:A 全集(含 B 中无匹配的部分)


二、直观对比

对比项 INNER JOIN LEFT JOIN
左表未匹配行 ❌ 不显示 ✅ 显示
右表未匹配行 ❌ 不显示 ❌ 不显示
结果行数 ≤ 两表行数 ≥ 左表行数
常见用途 精确匹配查询 统计、补漏、查缺失

三、示例说明

表数据

A 表(用户)

id name
1 张三
2 李四
3 王五

B 表(订单)

id a_id amount
1 1 100
2 2 200

INNER JOIN 结果

A INNER JOIN B
name amount
张三 100
李四 200

❌ 王五没有订单,被过滤


LEFT JOIN 结果

A LEFT JOIN B
name amount
张三 100
李四 200
王五 NULL

✅ 王五保留,订单为 NULL


四、常见使用场景

用 INNER JOIN

  • 查询“有订单的用户”
  • 关联维度表做精确过滤

用 LEFT JOIN

  • 查询“所有用户及其订单(含无订单)”
  • 找“缺失数据”(B 表为 NULL)
  • 报表统计、留存分析
-- 找出没有订单的用户
SELECT A.*
FROM A
LEFT JOIN B ON A.id = B.a_id
WHERE B.a_id IS NULL;

五、一句话总结

INNER JOIN 取“交集”,LEFT JOIN 保“左全量”。

如果你有具体业务 SQL 或性能问题,也可以直接发出来一起看。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI
助
手