后端岗位面试题更新 2026-08-05

请解释 MySQL 中 INNER JOIN、LEFT JOIN 和 RIGHT JOIN 的差异,并说明各自适用的场景。

后端开发技术原理方案权衡MySQL

考察说明

考查对 SQL 连接类型语义的理解与应用场景判断。

回答思路

  1. 【回答框架 1】INNER JOIN 返回两表中匹配的行,未匹配的行被忽略;LEFT JOIN 返回左表全部行,右表无匹配时用 NULL 填充;RIGHT JOIN 反之。三者都基于 ON 条件进行匹配。
  2. 【回答框架 2】适用场景:内连接用于仅需要交集数据的查询,如订单与客户都存在才显示;左连接用于保留主表全部记录并附加关联信息,如统计所有用户及其订单数;右连接较少用,常可通过交换表顺序改写为左连接。
  3. 【回答框架 3】匹配规则上,如果 ON 条件不满足,外连接会保留一侧的 NULL 扩展行,内连接则直接过滤;多表连接时,连接顺序会影响结果,尤其是外连接需要关注数据遗漏。
  4. 【回答框架 4】性能上,MySQL 优化器可能重排连接顺序,但外连接因语义限制可能影响优化;应通过索引或小表驱动大表来提升效率。
  5. 【关键点 1】INNER JOIN 只返回匹配行,LEFT JOIN 保留左表全部,RIGHT JOIN 保留右表全部。
  6. 【关键点 2】外连接无匹配时以 NULL 补位,内连接不补位。
  7. 【关键点 3】RIGHT JOIN 多数情况下可改为 LEFT JOIN 并交换表。
  8. 【关键点 4】连接条件用 ON,过滤条件用 WHERE,否则外连接语义改变。
  9. 【关键点 5】多表连接时需注意外连接的顺序与结果集影响。
  10. 【易错点 1】将 ON 条件中的过滤误放 WHERE,导致外连接返回行数减少。
  11. 【易错点 2】混淆 LEFT JOIN 与 INNER JOIN 的结果,以为左表全部行总是保留。
  12. 【易错点 3】不经评估就使用 RIGHT JOIN,忽略其可替换性。