SQL语法中inner join,left join,right join,full join的区别

对于 tableA xxx join tableB,tableA称为左表,tableB称为右表:

本文内容以下述数据举例说明:

tableA与tableB:

tableA                  tableB
aid     name            bid     value
1       2000            1       2010
2       2001            2       2012
3       2003            4       2014
5       2005            8       2016

1.inner join(内联结)

返回两个表中联结字段相等的行:

SELECT * FROM tableA inner join tableB on tableA.ID =tableB.ID;

则结果为:

aid     name            bid     value
1       2000            1       2010
2       2001            2       2012

2.left join(左联结)

返回包括左表中的所有记录,以及右表中联结字段与左表中相等的记录

SELECT * FROM tableA left join tableB on tableA.ID =tableB.ID;

则结果为:

aid     name            bid     value
1       2000            1       2010
2       2001            2       2012
3       2003            
5       2005            

3.right join(右联结)

返回包括右表中的所有记录,以及左表中联结字段与右表中相等的记录

SELECT * FROM tableA right join tableB on tableA.ID =tableB.ID;

 则结果为:

aid     name            bid     value
1       2000            1       2010
2       2001            2       2012
                        4       2014
                        8       2016

4.full join

返回左右表中的所有记录,联结字段相同的和不同的都列出来:

SELECT * FROM tableA full join tableB on tableA.ID =tableB.ID;

则返回结果为:

aid     name            bid     value
1       2000            1       2010
2       2001            2       2012
3       2003            
5       2005            
                        4       2014
                        8       2016

注意.

还有一种cross join(笛卡尔积)

返回左右表联结字段的的所有组合项(N*M项)

SELECT * FROM tableA cross join tableB 

则返回结果为:

aid     name            bid     value
1       2000            1       2010
1       2000            2       2012
1       2000            4       2014
1       2000            8       2016
2       2001            1       2010
2       2001            2       2012
2       2001            4       2014
2       2001            8       2016
3       2003            1       2010
3       2003            2       2012
3       2003            4       2014
3       2003            8       2016
5       2005            1       2010
5       2005            2       2012
5       2005            4       2014
5       2005            8       2016

本文综合参考:

https://www.cnblogs.com/pcjim/articles/799302.html

http://www.powerxing.com/sql-join/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值