join有哪几种方式?内外连接有什么区别?

摘自:https://blog.csdn.net/u011794730/article/details/51200796

首先介绍一下,join有5中连接方式:1.内连接(inner join...on...)2.全外连接(full join ....on ... )3.左连接(left join ...on...)4.右连接(right join ...on ...)5.交叉连接(cross join ...on ...)

1.内连接(inner join...on...)  

select * from table1 a inner join table2 b on a.id=b.id 通过id将table1和table2 连接起来产生一个新表,新表是由这两个表的公共部分组成;如下图:

join有哪几种方式?内外连接有什么区别?_第1张图片

2.左外连接(left join ....on ... )

select * from table1 a left join table2 b on a.id=b.id 是以左表(table1)为基准,查询结果中包含左表全部数据,右表匹配数据不存在时用null代替;如下图:

join有哪几种方式?内外连接有什么区别?_第2张图片

3.右外连接(right join ... on...)

select * from table1 a right join table2 b on a.id=b.id 跟左外连接相对应,是以右表(table2)为基准,查询结果中包含右表全部数据,左表数据匹配不存在时用null代替;如下图:

join有哪几种方式?内外连接有什么区别?_第3张图片

4.全外连接(full join ...on...)

select * from table1 a full join table2 b on a.id=b.id 全外连接其实是左连接和右连接的一个合集,也就是说他会查询出左表和右表的全部数据,匹配不上的会显示为null;如下图:

join有哪几种方式?内外连接有什么区别?_第4张图片

5.交叉连接(cross join...)

select * from table1 a crossjoin table2 b ;

也可以写为 select * from table1,table2;

交叉连接,也称为笛卡尔积,查询返回结果的行数等于两个表行数的乘积

你可能感兴趣的:(积跬步)