🔗
SQL JOIN 速查
SQL 各类 JOIN(内/左/右/全外/交叉)返回结果速查。
本地处理 · 不上传
加载工具中…
相关:sql · join · 连接 · 数据库 · 速查
SQL JOIN 速查图解各类连接的行为差异,涵盖内连接、左右外连接、全外连接与交叉连接。选错连接类型是数据量对不上的常见原因。
使用步骤
- 先想清楚需要保留哪一侧的全部行
- 据此选择内连接或某一侧的外连接
- 注意连接条件写在 ON 还是 WHERE,对外连接结果不同
- 多表连接前确认关联列上有索引
使用场景
- 确认该用哪种连接
- 理解连接结果的行数变化
- 排查数据缺失或重复
- 学习连接的执行逻辑
小贴士
- INNER JOIN 只保留两边都匹配的行,LEFT JOIN 保留左表全部行、右表无匹配时填 NULL。数据「少了」通常是误用了 INNER。
- 一对多关系的连接会让左表的行重复出现,聚合前不注意这一点会导致金额或数量被重复累加。
- 把过滤条件写在 ON 里和写在 WHERE 里,对外连接的结果完全不同——WHERE 中的右表条件会把 LEFT JOIN 变成 INNER JOIN。
常见问题
为什么 LEFT JOIN 后数据变少了?
很可能是在 WHERE 里加了右表字段的过滤条件。右表无匹配时该字段为 NULL,会被 WHERE 过滤掉,结果等同于 INNER JOIN。这类条件应该写在 ON 子句里。
为什么连接后行数变多了?
因为是一对多关系,左表的每行会与右表的多个匹配行分别组合。做 SUM 之前必须注意这一点,否则金额会被重复计算。可以先聚合右表再连接。
ON 和 WHERE 有什么区别?
ON 决定两表如何匹配,在连接时生效;WHERE 过滤连接后的结果集。对 INNER JOIN 两者效果相同,但对外连接差别很大——把右表条件放 WHERE 会消除掉未匹配的行。
SQL JOIN 速查是免费的吗?
是。本站所有工具完全免费,无需注册登录、无广告干扰,打开即用。
使用SQL JOIN 速查,我的数据安全吗?
安全。该工具在你的浏览器本地完成处理,输入内容不会上传到服务器,隐私更有保障。