Mysql表关联简单介绍(inner join、left join、right join、full join不支持、笛卡尔积)
MySQL不支持FULL JOIN和笛卡尔积。
- INNER JOIN(内联接)
内联接是最常用的一种联接方式,只联接两个表中有匹配的记录。
SELECT a.column1, b.column2
FROM table1 a
INNER JOIN table2 b
ON a.common_column = b.common_column;
- LEFT JOIN(左联接)
左联接会返回左表的所有记录,即使右表中没有匹配的记录。
SELECT a.column1, b.column2
FROM table1 a
LEFT JOIN table2 b
ON a.common_column = b.common_column;
- RIGHT JOIN(右联接)
右联接会返回右表的所有记录,即使左表中没有匹配的记录。
SELECT a.column1, b.column2
FROM table1 a
RIGHT JOIN table2 b
ON a.common_column = b.common_column;
注意:在MySQL中,FULL OUTER JOIN 是不直接支持的,但是可以通过 UNION 来实现。
SELECT a.column1, b.column2
FROM table1 a
LEFT JOIN table2 b
ON a.common_column = b.common_column
UNION
SELECT a.column1, b.column2
FROM table1 a
RIGHT JOIN table2 b
ON a.common_column = b.common_column;
- CROSS JOIN(交叉联接)
交叉联接返回左表中的每个行与右表中的每个行的组合,即笛卡尔积。
SELECT a.column1, b.column2
FROM table1 a
CROSS JOIN table2 b;
注意:MySQL不支持FULL JOIN和笛卡尔积,但可以通过UNION ALL操作来实现笛卡尔积。
SELECT a.column1, b.column2
FROM table1 a
CROSS JOIN table2 b
UNION ALL
SELECT a.column1, b.column2
FROM table1 a
CROSS JOIN table2 b;
以上就是MySQL表关联的简单介绍和使用示例。
评论已关闭