1 A,B共有 — 内连接
SELECT <select...list> FROM TableA A INNER JOIN TableB B ON A.Key=B.Key;
2 全A — 左连接
SELECT <select...list>FROM TableA A LEFT JOIN TableB B ON A.Key=B.Key;
3 全B — 右连接
SELECT <select...list>FROM TableA A RIGHT JOIN TableB B ON A.Key=B.Key;
4 A独有
SELECT <select…list>FROM TableA a LEFT JOIN TableB b ON A.Key=B.Key WHERE B.Key IS null;
5 B独有
SELECT <select…list>FROM TableA a RIGHT JOIN TableB b ON A.Key=B.Key WHERE A.Key IS null;
6 A独有 + B独有 + AB共有 — 全外连接
注意:
mysql不支持FULL JOIN语法,可以利用union关键字完成上诉查询
union关键字会将两个查询集合进行去重叠加,因此sql可以写成下面的样子:
SELECT <select...list>FROM TableA A LEFT JOIN TableB B ON A.Key=B.Key;
UNION
SELECT <select...list>FROM TableA A RIGHT JOIN TableB B ON A.Key=B.Key;
当然也可以将1、4、5的结果进行UNION操作。
7 A独有 + B独有
SELECT <select…list>FROM TableA a LEFT JOIN TableB b ON A.Key=B.Key WHERE B.Key IS null;
UNION
SELECT <select…list>FROM TableA a RIGHT JOIN TableB b ON A.Key=B.Key WHERE A.Key IS null;