SQL 的各种 join 到底是怎么回事


我将讨论从两个关系表中返回数据的七种不同方法。我将排除交叉连接和自引用连接

1.png


【一】INNER JOIN(内联)

1.png

    这是最简单,最容易理解的Join,也是最常见的。此查询将返回左表(表A)中右表(表B)中具有匹配记录的所有记录。此Join的编写如下:

SELECT
	< select_list > 
FROM
	Table_A A
	INNER JOIN Table_B B ON A.KEY = B.KEY


【二】LEFT JOIN(左联)

2.png

    无论这些记录中的任何记录是否与右表(表B)匹配,此查询都将返回左表(表A)中的所有记录。它还将返回右表中的任何匹配记录。此Join的编写如下:

SELECT
	< select_list > 
FROM
	Table_A A
	LEFT JOIN Table_B B ON A.KEY = B.KEY


【三】RIGHT JOIN(右联)

3.png

    无论这些记录中的任何记录是否与左表(表A)匹配,此查询将返回右表(表B)中的所有记录。它还将返回左表中的任何匹配记录。此Join的编写如下:

SELECT
	< select_list > 
FROM
	Table_A A
	RIGHT JOIN Table_B B ON A.KEY = B.KEY


【四】OUTER JOIN(外联)

4.png

    此加入也可以称为 FULL OUTER JOIN 或 FULL JOIN。此查询将返回两个表中的所有记录,连接左表(表A)中与右表(表B)中的记录匹配的记录。此Join的编写如下:

SELECT
	< select_list > 
FROM
	Table_A A
	FULL OUTER JOIN Table_B B ON A.KEY = B.KEY


【五】LEFT JOIN EXCLUDING INNER JOIN(左连-内连)

5.png

    此查询将返回左表(表A)中与右表(表B)中的任何记录都不匹配的所有记录。此Join的编写如下:

SELECT
	< select_list > 
FROM
	Table_A A
	LEFT JOIN Table_B B ON A.KEY = B.KEY 
WHERE
	B.KEY IS NULL


【六】RIGHT JOIN EXCLUDING INNER JOIN(右连-内连)

6.png

    此查询将返回右表(表B)中与左表(表A)中的任何记录都不匹配的所有记录。此Join的编写如下:

SELECT
	< select_list > 
FROM
	Table_A A
	RIGHT JOIN Table_B B ON A.KEY = B.KEY 
WHERE
	A.KEY IS NULL


【七】OUTER JOIN EXCLUDING INNER JOIN(外连-内连)

 7.png

   此查询将返回左表(表A)中的所有记录以及右表(表B)中不匹配的所有记录。我还没有需要使用这种类型的Join,但是所有其他的。此Join的编写如下:

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


上一篇 下一篇
注:本文转载自CL Moffatt,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如有侵权行为,请联系我们,我们会及时删除。

评论

登录后可发表评论