如何选择使用内连接或外连接

 

 

当我们在多表连接查询时,相信有大部分的程序员,还是不清楚何时使用内链接,何时使用外连接!现在我来总结一下我个人的经验!

 

      比如有tableA ,tableB,tableA和tableB是一对多

 

      需求一:根据tableB的某写字段,查询出tableA

      分析:如果此时使用内链接 则相应的语句是:select a.* from tableA a ,tableB b  where a.id =tableB.aid and b.code='4401'

                 此时返回的结果是tableA在tableB有子数据的的部分数据,而如果表tableA中的某条数据,在表tableB中不存在子数据,此时是查询不出来!

              

                  如果使用的是外连接,则相应的语句如下:select a.* from tableA a  left join tableB b on a.id=b.aid and b.code='4401';

                 此时返回的结果是tableA中的全部数据,而且有重复数出现,则应该用distinct过滤,语句如下:

                      :select distinct a.* from tableA a  left join tableB b on a.id=b.aid and b.code='4401';

              

               总结:1:如果查询要返回的是一的一方,而且需要返回全部的数据,则应该用外连接,此时内链接不合适。

                          2:如果查询要返回的是一的一方,而且只想返回在多的一方存在记录的数据,则使用屋内连接。

 

 

          需求二:根据tableB的某写字段,查询出tableB

                     

 

 

 

 

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值