sql左右连接查询

假设有两个表,A表和B表,A表数据量少,B表数据量多的情况下

假设有两个表,A表和B表,A表数据量少,B表数据量多的情况下
适应需求:为了A表中某些数据量的缺失原因,将A表数据全导入Navicate
具体方法看我的另一个文章----

提出需求:

查询出A表中的某个字段值,但是A表中某个字段值(假设username)是在B表中情况下

正确写法:–左连接(左边表为主,右边表为辅,且右边表数据可以为空输出)

(其实就是根据条件没有查询出相应的结果)

举例子:下边这个左连接例子中 A表为主,B表为辅

 SELECT  a.*,b.username
 FROM A  a   left join B  b  on a.userid = b.userid
// 原因:A表为主,A表中每个id去寻找B表中对应id
//如果让B表中对应id去找A表中id,那岂不是太浪费数据量多的B表资源

错误写法

 SELECT  a.*,b.username
 FROM B  b   left join A  a  on a.userid = b.userid

为什么错误???

因为忽略一个前提条件:B表数据量大的情况下,从B表中拿出对应id和A表中id对比,这就忽略了一个主次关系,注意主次关系,一般情况下,用数据量少的表去找多的表id对比,否则浪费大量B表查询资源

右边连接一切和左连接举列子用意相反,且右边为主,左边可以输出为空的数据(其实就是根据条件没有查询出相应的结果)

全连接
两边都为主,左右两边都是可以输出为空的数据

解释:其实就是根据条件没有查询出相应的结果,有可能左边为空,有可能右边为空

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值