MySQL 中 INNER JOIN、LEFT JOIN 和 RIGHT JOIN 的区别是什么?
MySQL 中 INNER JOIN、LEFT JOIN 和 RIGHT JOIN 的区别是什么?
回答重点
INNER JOIN:
- 只返回两个表中匹配的行。如果没有匹配,则该行不会出现在结果集中。
- 适用于只关心交集数据的场景。
LEFT JOIN(或 LEFT OUTER JOIN):
- 返回左表中的所有行,即使右表中没有匹配的行。如果右表没有匹配,则结果中的右侧列会显示为NULL。
- 适用于需要保留左表所有数据的场景。
RIGHT JOIN(或 RIGHT OUTER JOIN):
- 返回右表中的所有行,即使左表中没有匹配的行。如果左表没有匹配,则结果中的左侧列会显示为NULL。
- 适用于需要保留右表所有数据的场景。
扩展知识
代码示例
INNER JOIN:
1 | SELECT * |
LEFT JOIN:
1 | SELECT * |
RIGHT JOIN:
1 | SELECT * |
应用场景
- INNER JOIN 适合用在只需要共同数据的结果集中。
- LEFT JOIN 在需要保留主表所有数据的报表中非常有用,比如在客户(左表)和订单表(右表)中查找所有客户及其订单信息,即使有些客户没有订单。
- RIGHT JOIN 则在需要保留右表所有数据的情况下使用,例如在处理员工(左表)和部门表(右表)时,确保显示所有部门,即使某些部门没有员工。
NULL 值处理
- 使用 LEFT JOIN 或 RIGHT JOIN 时,需注意处理结果集中可能出现的 NULL 值,以确保后续的数据处理逻辑正确。
图示所有 JOIN
Comments