INNER JOIN 和 OUTER JOIN 是 SQL 中用于结合两个或多个表的关联操作。
INNER JOIN(内联接): 返回所有匹配的记录。如果在一个表中存在匹配的行,而在另一个表中不存在匹配的行,那么这些行不会显示。
SELECT table1.column1, table2.column2
FROM table1
INNER JOIN table2
ON table1.common_field = table2.common_field;
LEFT JOIN(左联接): 返回左表的所有记录,即使右表中没有匹配的记录。如果右表中没有匹配,则结果中右表的部分会包含 NULL。
SELECT table1.column1, table2.column2
FROM table1
LEFT JOIN table2
ON table1.common_field = table2.common_field;
RIGHT JOIN(右联接): 返回右表的所有记录,即使左表中没有匹配的记录。如果左表中没有匹配,则结果中左表的部分会包含 NULL。
SELECT table1.column1, table2.column2
FROM table1
RIGHT JOIN table2
ON table1.common_field = table2.common_field;
FULL OUTER JOIN(全外联接): 返回两表中的所有记录,如果某一侧没有匹配,那一侧会显示为 NULL。
SELECT table1.column1, table2.column2
FROM table1
FULL OUTER JOIN table2
ON table1.common_field = table2.common_field;
注意:MySQL 不支持 FULL OUTER JOIN,你可以通过 UNION 来模拟 FULL OUTER JOIN 的效果。
SELECT table1.column1, table2.column2
FROM table1
LEFT JOIN table2
ON table1.common_field = table2.common_field
UNION
SELECT table1.column1, table2.column2
FROM table1
RIGHT JOIN table2
ON table1.common_field = table2.common_field;