MySQL中leftjoin和rightjoin的区别


上面文章介绍了 join和on的语法,下面看看left join和right join

left join:

先看看join和left join区别

  • left join必须有on;
  • left join会检查左边表的数据是否都包含在新生成的表中,若是:则和join一样;若不是:则用NULL和不包含的行组成新的行加入到新表中;(可能有些不理解,结合下面例子看看就懂)

举例看:

在这里插入图片描述
我们先执行joinstu join class on classid = class.id (join的详细语法介绍过)
在这里插入图片描述
再执行left joinstu left join class on classid = class.id 后变为:

由于左边的表stu中的数据在join后,第三行没有在新表出现,left join会将没在新表出现的数据和NULL作拼接,并作为新的行加进来
在这里插入图片描述
如果将stu和class顺序换一下,执行: class left join stu on classid = class.id ,结果会是什么呢?
在这里插入图片描述
这个时候,左边的表是class,它的数据在新表中都存在,所以和用join是一样的!!

通过这个例子,再回过头去看上面的话,应该就可以理解。

left join 左右两边的表是不能交换的,交换的话,意思会变;join左右两边的表可以交换,意思不变

right join:

right join会检查右边表的数据是否都包含在新生成的表中,若是:则和join没有区别;若不是:则用NULL和不包含的行组成新的行加入到新表中。

如果理解了 left join的话,就会发现其实: A right join B = B left join A
A right join B: 是以B为基准;B left join A: 也是以B为基准的

总结:

  • join: 将两个表按照条件连接起来;
  • left join: 以左边表为基准,看左边表的数据是否都包含在新生成的表中,若是:则和join一样;若不是:则用NULL和不包含的行组成新的行加入到新表中;
  • right join: 以右边表为基准,看右边表的数据是否都包含在新生成的表中,若是:则和join一样;若不是:则用NULL和不包含的行组成新的行加入到新表中;
  • 22
    点赞
  • 55
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值