原文链接:https://www.codeproject.com/Articles/33052/Visual-Representation-of-SQL-Joins
A.jpg B.jpg Visual_SQL_JOINS_orig.jpg1.Left JOIN (左连接)
Left JOIN.jpg
该查询将返回左表(表A)中的所有记录,而不管这些记录是否与右表(表B)中的任何记录相匹配。它还将返回右表中的任何匹配记录。这个连接写法如下:
SELECT <select_list>
FROM Table_A A
LEFT JOIN Table_B B
ON A.Key = B.Key
LEFT JOIN.jpg
2.Right JOIN(右连接)
Right JOIN.jpg
该查询将返回右表(表B)中的所有记录,而不管这些记录是否与左表(表a)中的任何记录相匹配。它还将返回左表中的任何匹配记录。这个连接写如下:
SELECT <select_list>
FROM Table_A A
RIGHT JOIN Table_B B
ON A.Key = B.Key
RIGHT JOIN.jpg
3.Inner JOIN (内连接)
Inner JOIN.jpg
这是最简单、最容易理解的连接,也是最常见的连接。这个查询将返回左表(表A)中与右表(表B)中有匹配记录的所有记录。
SELECT <select_list>
FROM Table_A A
INNER JOIN Table_B B
ON A.Key = B.Key
INNER JOIN.jpg
4.Left Excluding JOIN(左连接不包含内连接)
Left Excluding JOIN.jpg
这个查询将返回左表(表A)中所有与右表(表B)中任何记录不匹配的记录。
SELECT <select_list>
FROM Table_A A
LEFT JOIN Table_B B
ON A.Key = B.Key
WHERE B.Key IS NULL
Left Excluding JOIN.jpg
5.Right Excluding JOIN(右连接不包含内连接)
Right Excluding JOIN.jpg
这个查询将返回右表(表B)中与左表(表A)中任何记录不匹配的所有记录。
SELECT <select_list>
FROM Table_A A
RIGHT JOIN Table_B B
ON A.Key = B.Key
WHERE A.Key IS NULL
Right Excluding JOIN.jpg
6.Outer Excluding JOIN
Outer Excluding JOIN.jpg
这个查询将返回左表(表A)中的所有记录和右表(表B)中的所有不匹配的记录。我还需要使用这种类型的连接,但是我经常使用其他所有类型的连接。这个连接写法如下:
SELECT <select_list>
FROM Table_A A
FULL OUTER JOIN Table_B B
ON A.Key = B.Key
WHERE A.Key IS NULL OR B.Key IS NULL
由于mysql不支持full join,只能通过下面代码模拟实现
SELECT * FROM stu_movie A LEFT JOIN stu_student B ON A.cid = B.cid WHERE B.cid IS NULL UNION ALL SELECT * FROM stu_movie A RIGHT JOIN stu_student B ON A.cid = B.cid WHERE A.cid IS NULL;
Outer Excluding JOIN.jpg
7.Outer JOIN(外连接、全连接)
Outer JOIN.jpg
此联接也可以称为完整的外部联接或完整联接。这个查询将返回来自两个表的所有记录,连接来自左表(表A)的记录,这些记录与来自右表(表B)的记录相匹配。
SELECT <select_list>
FROM Table_A A
FULL OUTER JOIN Table_B B
ON A.Key = B.Key
上面代码在mysql执行是报错的,因为mysql不支持全连接,只能用以下代码实现效果,含义是左连接+右连接+去重=全连接:
SELECT A.cid AS A_cid,B.cid AS B_cid FROM stu_movie A LEFT JOIN stu_student B ON A.cid = B.cid UNION SELECT A.cid AS A_cid,B.cid AS B_cid FROM stu_movie A RIGHT JOIN stu_student B ON A.cid= B.cid
Outer JOIN.jpg
网友评论