CS-Notes 学习笔记
Java 后端 · MySQL

内连接和左外连接有什么区别?MySQL 怎样实现全外连接?

先自己想一想,再看参考要点

参考要点

  • 内连接(INNER JOIN)只返回两张表中满足连接条件的行,条件写在 ON 中,也可以写成 FROM 两张表并在 WHERE 中用等值条件连接
  • 外连接保留没有关联的行,左外连接保留左表中没有匹配的行,右表的列为 NULL,例如列出所有顾客的订单,包括还没有下过订单的顾客
  • MySQL 不支持 FULL OUTER JOIN,可以用 UNION ALL 合并左外连接的结果和右外连接中左表没有匹配的行(WHERE 左表主键 IS NULL),直接用 UNION 合并两个外连接会把相同的行去重,可能少行
  • 很多子查询可以改写为连接,MySQL 8.0 会把 IN 子查询自动转换为半连接,两种写法快慢以 EXPLAIN 为准
在学习站中自测这道题

学习站:先用面试题自评定级,按水平和面试日期排出每天的计划,自评过的题按间隔复习。免费、无需注册,记录只保存在自己的浏览器中。