图解 5 种 Join 连接及实战案例!(inner/ left/ right/ full/ cross)

转载自 图解 5 种 Join 连接及实战案例!(inner/ left/ right/ full/ cross)

Join 连接在日常开发用得比较多,但大家都搞清楚了它们的使用区别吗??一文带你上车~~

内连接 inner join

内连接是基于连接谓词将俩张表(如A和B)的列组合到一起产生新的结果表,在表中存在至少一个匹配时,INNER JOIN 关键字返回行。 

图解 5 种 Join 连接及实战案例!(inner/ left/ right/ full/ cross)

下面是一个简单的使用案例 

图解 5 种 Join 连接及实战案例!(inner/ left/ right/ full/ cross)

以下是运行代码及结果 

图解 5 种 Join 连接及实战案例!(inner/ left/ right/ full/ cross)

左外连接 left join

左外连接Left join关键字会从左表那里返回所有的行,即使是在右表中没有匹配到的行 

图解 5 种 Join 连接及实战案例!(inner/ left/ right/ full/ cross)

下面是一个简单的案例 

图解 5 种 Join 连接及实战案例!(inner/ left/ right/ full/ cross)

下面是测试用例 

图解 5 种 Join 连接及实战案例!(inner/ left/ right/ full/ cross)

右外连接 right join

右外连接关键字Right join会从右表那里返回所有的行,即使是在左表中没有匹配到的行 

图解 5 种 Join 连接及实战案例!(inner/ left/ right/ full/ cross)

下面是一个简单的案例 

图解 5 种 Join 连接及实战案例!(inner/ left/ right/ full/ cross)

下面是运行及其结果 

图解 5 种 Join 连接及实战案例!(inner/ left/ right/ full/ cross)

全连接 full join

全连接的关键字Full join,只要其中某个表中存在匹配,Full join 就会返回行 

图解 5 种 Join 连接及实战案例!(inner/ left/ right/ full/ cross)

下面是一个简单的案例 

图解 5 种 Join 连接及实战案例!(inner/ left/ right/ full/ cross)

以下是运行及结果 

图解 5 种 Join 连接及实战案例!(inner/ left/ right/ full/ cross)

注意一点 mysql中是不支持Full join 的但是orcal等数据库是支持的。 
如果在mysql要使用Full join就会报以下错误 

图解 5 种 Join 连接及实战案例!(inner/ left/ right/ full/ cross)

解决办法:同时使用左连接和右连接 

以下是一个简单的例子

图解 5 种 Join 连接及实战案例!(inner/ left/ right/ full/ cross)

交叉连接 cross join

交叉连接一般使用的比较少,交叉连接又称笛卡尔连接或者叉乘连接,如果,A和B是俩个集合,他们的交叉连接就是A*B 

以下是一个简单的案例 
图解 5 种 Join 连接及实战案例!(inner/ left/ right/ full/ cross)