MySQL left join、right join以及inner join的区别 ?
参考答案:
MySQL中的LEFT JOIN、RIGHT JOIN和INNER JOIN是用于将两个或多个表基于某些关联条件进行连接查询的。它们之间的主要区别在于如何处理没有匹配的行。
-
INNER JOIN(或简称 JOIN):
- 也称为内连接。
- 只返回两个表中都有匹配的行。
- 如果某行在一个表中没有匹配,那么该行将不会出现在结果中。
- 例如,
SELECT * FROM A INNER JOIN B ON A.id = B.id;
将只返回A和B两个表中id
字段相匹配的行。
-
LEFT JOIN(或 LEFT OUTER JOIN):
- 左连接。
- 返回左表中的所有行,以及右表中匹配的行。
- 如果左表中的某行在右表中没有匹配,那么结果中的右表部分将包含NULL值。
- 例如,
SELECT * FROM A LEFT JOIN B ON A.id = B.id;
将返回A表中的所有行,以及B表中与A表中id
字段相匹配的行。如果A表中的某行在B表中没有匹配,那么该行在B表的部分将显示为NULL。
-
RIGHT JOIN(或 RIGHT OUTER JOIN):
- 右连接。
- 返回右表中的所有行,以及左表中匹配的行。
- 如果右表中的某行在左表中没有匹配,那么结果中的左表部分将包含NULL值。
- 例如,
SELECT * FROM A RIGHT JOIN B ON A.id = B.id;
将返回B表中的所有行,以及A表中与B表中id
字段相匹配的行。如果B表中的某行在A表中没有匹配,那么该行在A表的部分将显示为NULL。
总结:
INNER JOIN
只返回两个表都有匹配的行。LEFT JOIN
返回左表的所有行,以及右表中匹配的行。左表没有匹配的行在右表部分显示为NULL。RIGHT JOIN
返回右表的所有行,以及左表中匹配的行。右表没有匹配的行在左表部分显示为NULL。
选择哪种连接类型取决于你想从查询中得到什么样的结果。