在MySQL中,INNER JOIN
、LEFT JOIN
和RIGHT JOIN
是用于连接两个或多个表的操作符,它们的主要区别在于如何处理匹配的记录和不匹配的记录。
-
INNER JOIN:
-
只返回两个表中匹配的记录。
-
如果在左表和右表中找不到匹配的行,那么这些行将不会出现在结果集中。
-
语法:
SELECT columns FROM table1 INNER JOIN table2 ON table1.column = table2.column;
-
-
LEFT JOIN (或 LEFT OUTER JOIN):
-
返回左表中的所有记录,以及右表中匹配的记录。如果右表中没有匹配的记录,则结果中右表的字段会显示为
NULL
。 -
适用于需要保留左表所有记录的场景。
-
语法:
SELECT columns FROM table1 LEFT JOIN table2 ON table1.column = table2.column;
-
-
RIGHT JOIN (或 RIGHT OUTER JOIN):
-
返回右表中的所有记录,以及左表中匹配的记录。如果左表中没有匹配的记录,则结果中左表的字段会显示为
NULL
。 -
适用于需要保留右表所有记录的场景。
-
语法:
SELECT columns FROM table1 RIGHT JOIN table2 ON table1.column = table2.column;
-
总结:
- INNER JOIN:仅返回两个表中都有的匹配行。
- LEFT JOIN:返回左表的所有行,以及右表中的匹配行,如果右表没有匹配,返回
NULL
。 - RIGHT JOIN:返回右表的所有行,以及左表中的匹配行,如果左表没有匹配,返回
NULL
。