left join on和where的区别

首先我们先看两个例子:

我们有一张基础表 user_info

 还有一张扩展表

 下面看各种sql语句以及查询结果

  1. SELECT ui.* ,ue.phone FROM user_info ui LEFT JOIN user_extend ue ON ui.id = ue.user_id

    结果:
     

    分析:很简单的左连接,数据都是正常的
  2.  SELECT ui.* ,ue.phone FROM user_info ui LEFT JOIN user_extend ue ON ui.id = ue.user_id WHERE                ui.name=ue.user_name
    结果:

    分析:条件加到where后面会对整个结果集进行筛选,也就是说右表的条件也会对左表的行进行筛选,其实也就是内连接了

  3. SELECT ui.* ,ue.phone FROM user_info ui LEFT JOIN user_extend ue ON ui.id = ue.user_id AND ui.`name`=ue.user_name

    结果:
     

    分析:条件加到on后面会对右表数据进行筛选,如果不满足条件则结果集右表数据为空但不影响左表的数据,也就是左边一定会有,右边不一定会有;还有一种情况就是右边如果有多行数据满足条件,那么查出来就会有多条结果集,比如我们把user_extend表改成这样:

    那么结果集就是:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值