【MySQL】连接查询(JOIN 关键字)—— 图文详解:内连接(INNER JOIN)、外连接(OUTER JOIN)、左连接(LEFT JOIN)、左外连接、右连接、右外连接、全连接、全外连接
在MySQL中,JOIN 关键字主要用于连接两个或多个数据表,根据连接类型的不同,可以分为内连接(INNER JOIN)、外连接(OUTER JOIN),以及交叉连接(CROSS JOIN)。
- 内连接(INNER JOIN):仅选择两个表中有匹配的记录。
SELECT table1.column1, table2.column2
FROM table1
INNER JOIN table2
ON table1.common_field = table2.common_field;
- 左外连接(LEFT JOIN)或称左连接:选择左表的所有记录,即使右表中没有匹配。
SELECT table1.column1, table2.column2
FROM table1
LEFT JOIN table2
ON table1.common_field = table2.common_field;
- 右外连接(RIGHT JOIN)或称右连接:选择右表的所有记录,即使左表中没有匹配。
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;
- 交叉连接(CROSS JOIN):产生两个表所有可能组合的笛卡尔积,即笛卡尔积是将一个集合中的每个元素与另一个集合的每个元素相组合,没有匹配条件,故常用于获取笛卡尔积。
SELECT table1.column1, table2.column2
FROM table1
CROSS JOIN table2;
注意:MySQL 8.0.2 版本开始支持 FULL OUTER JOIN。在此版本之前,MySQL 不支持完全外连接,但可以通过 UNION 来模拟实现全外连接的效果。
评论已关闭