SQL 左连接和右连接
下面为你全面、深入地解析 SQL 左连接(LEFT JOIN)和右连接(RIGHT JOIN),涵盖定义、详细对比、优缺点、使用场景,并重点给出基于索引的性能优化方案与度量标准。
1. SQL 左连接和右连接介绍
左连接(LEFT JOIN / LEFT OUTER JOIN):返回左表(LEFT JOIN 关键字左边的表)的全部行 + 右表中匹配的行。如果右表没有匹配,则结果中右表部分字段填充为
NULL。右连接(RIGHT JOIN / RIGHT OUTER JOIN):返回右表(RIGHT JOIN 关键字右边的表)的全部行 + 左表中匹配的行。如果左表没有匹配,则结果中左表部分字段填充为
NULL。
核心本质:
LEFT JOIN和RIGHT JOIN在功能上是完全等价的,它们只是方向不同。把LEFT JOIN B中的表顺序互换,就变成了RIGHT JOIN A。在实际开发中,左连接的使用频率远高于右连接(因为人们习惯从左往右读)。
2. 详细比较(维度对比)
| 比较维度 | 左连接(LEFT JOIN) | 右连接(RIGHT JOIN) |
|---|---|---|
| 主导表(驱动表) | 左侧的表(A) | 右侧的表(B) |
| 被驱动表(匹配表) | 右侧的表(B) | 左侧的表(A) |
| 结果集行数 | 至少为左表行数(一对多时会膨胀) | 至少为右表行数(一对多时会膨胀) |
| 匹配失败结果 | 右表字段为 NULL | 左表字段为 NULL |
| 可读性与习惯 | 符合自上而下、从左到右的阅读习惯,推荐使用 | 不符合阅读习惯,容易造成逻辑混乱,不推荐 |
| 相互转换 | A LEFT JOIN B |