参考:
https://segmentfault.com/a/1190000015572505
https://www.cnblogs.com/beginman/p/3754322.html
https://www.codeproject.com/Articles/33052/Visual-Representation-of-SQL-Joins
https://www.cnblogs.com/beginman/p/3754322.html
Inner Join
数据包含关系如上图,这种Join会返回左边表和右边表满足匹配条件的所有的数据,写法如下:
1 | SELECT <select_list> |
Left Join
Left Join会返回左边表的所有数据和右边表中和左边表中匹配的数据,写法如下:
1 | SELECT <select_list> |
Right Join
Right Join是Left Join的对立面,Right Join会返回右边表的所有数据和左边表中和右边表中匹配的数据,写法如下:
1 | SELECT <select_list> |
Outer Join
也可以称为FULL OUTER JOIN
或者FULL JOIN
,这种方式会返回两张表中的所有数据,将两张表中匹配的数据连接起来,写法如下:
1 | SELECT <select_list> |
Left Excluding Join
这种方式会返回左边表中和右边表中不匹配的所有数据,写法如下:
1 | SELECT <select_list> |
Right Excluding Join
这种方式会返回右边表中和左边表中不匹配的所有数据,写法如下:
1 | SELECT <select_list> |
Outer Excluding JOIN
这种方式会返回左右两张表中都不匹配的数据,写法如下:
1 | SELECT <select_list> |
例子参考: https://www.codeproject.com/Articles/33052/Visual-Representation-of-SQL-Joins
Cross Join
得到的是两个表的乘积,即笛卡尔积
在 MySQL 中(仅限于 MySQL) CROSS JOIN 与 INNER JOIN 的表现是一样的 在不指定 ON 条件得到的结果都是笛卡尔积,反之取得两个表完全匹配的结果。