SQL 双表 7 种 连接
具体分解如下:
1.INNER JOIN(内连接)
可以理解为取两个集合根据条件取交集
SELECT <select_list>
FROM Table_A A
INNER JOIN Table_B B
ON A.Key = B.Key
2.LEFT JOIN(左连接)
取左边集合的全集
SELECT <select_list>
FROM Table_A A
LEFT JOIN Table_B B
ON A.Key = B.Key
3.RIGHT JOIN(右连接)
同上,取右边集合的全集
SELECT <select_list>
FROM Table_A A
RIGHT JOIN Table_B B
ON A.Key = B.Key
4.OUTER JOIN(外连接)
取两个集合的并集
SELECT <select_list>
FROM Table_A A
FULL OUTER JOIN Table_B B
ON A.Key = B.Key
但是如果是MySQL,就没有外连接,不过可以通过左右连接进行union来实现,注意是union 不是union all ,union可以去重
SELECT * FROM Table_A A LEFT JOIN Table_B B ON A.Key = B.Key
UNION
SELECT * FROM Table_A A RIGHT JOIN Table_B B ON A.Key = B.Key;
5.LEFT JOIN EXCLUDING INNER JOIN(左连接-内连接)
左连接的集合减去内连接,这里和集合的减法一样
SELECT <select_list>
FROM Table_A A
LEFT JOIN Table_B B
ON A.Key = B.Key
WHERE B.Key IS NULL
6.RIGHT JOIN EXCLUDING INNER JOIN(右连接-内连接)
SELECT <select_list>
FROM Table_A A
RIGHT JOIN Table_B B
ON A.Key = B.Key
WHERE A.Key IS NULL
7.OUTER JOIN EXCLUDING INNER 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