MySQL - 左连接、右连接、内连接、完全外连接、交叉连接 & 一对多、多对多对多 & 联合连接
在MySQL中,JOIN语句用于在两个或多个表之间执行连接。连接类型主要有以下几种:
- 内连接(INNER JOIN):仅返回两个表中匹配的行。
SELECT * FROM table1 INNER JOIN table2 ON table1.column_name = table2.column_name;
- 左连接(LEFT JOIN):返回左表中的所有行,即使右表中没有匹配。
SELECT * FROM table1 LEFT JOIN table2 ON table1.column_name = table2.column_name;
- 右连接(RIGHT JOIN):返回右表中的所有行,即使左表中没有匹配。
SELECT * FROM table1 RIGHT JOIN table2 ON table1.column_name = table2.column_name;
全外连接(FULL OUTER JOIN):返回左表和右表中的所有行,当另一边没有匹配时,结果为NULL。
MySQL不直接支持FULL OUTER JOIN,但可以通过UNION来实现:
SELECT * FROM table1 LEFT JOIN table2 ON table1.column_name = table2.column_name
UNION
SELECT * FROM table1 RIGHT JOIN table2 ON table1.column_name = table2.column_name;
- 交叉连接(CROSS JOIN):返回两个表的笛卡尔积,即每个表中的每行与另一个表中的每行组合。
SELECT * FROM table1 CROSS JOIN table2;
- 一对多(One-to-Many):在一对多关系中,一个表中的每行可以匹配另一个表中的多个行。通常使用左连接或右连接来查询。
- 多对多(Many-to-Many):在多对多关系中,一个表中的每行可以匹配另一个表中的多个行,并且可能需要使用笛卡尔积来查询。
- 多对一(Many-to-One):在多对一关系中,一个表中的多个行可以匹配另一个表中的单个行。通常使用内连接来查询。
注意:JOIN语句中的ON子句用于指定连接条件,而WHERE子句可用于过滤结果集。
评论已关闭