inner join,left join用法

     项目中用到的内连接,外连接查询,自己总结下吧,书上说的太笼统;

     表结构如果是一对一,用inner join ;如果是一对多,按照需求选择inner join,left join;

     举个例子吧,比较下 他们的区别:

      输入 sql语句: select id, amount   from cd_financing_account where user_id=2762;     语句 1

            select  id,bid_amount,financing_account_id  from cd_bid where bid_user_id=2762 ;     语句2 

查询出来的两张表反映:

1    cd_bid 是cd_financing_account的映射,cd_bid是 cd_financing_account的子集(他们是一对多的关系) 

      项目需求:先有 cd_financing_account,后有 cd_bid(也就是 cd_bid基于前者)

2    cd_financing_account里面的主键“id”392,表cd_bid没有;


如果我们用 inner join 查询 ,id=392的查询不出来;

select  a.id as financing_account_id ,a.amount,b.id as bid_id,b.bid_amount
from cd_financing_account a inner   join cd_bid b  on a.id=b.financing_account_id  where a.user_id=2762;

查询结果:


其实这样的查询结果跟 :select  a.id as financing_account_id ,a.amount,b.id as bid_id,b.bid_amount
from cd_financing_account a left join cd_bid b  on a.id=b.financing_account_id  where a.user_id=2762  and b.bid_id is not null;

select  a.id as financing_account_id ,a.amount,b.id as bid_id,b.bid_amount
from    cd_bid b left join  cd_financing_account a on a.id=b.financing_account_id  where a.user_id=2762 ;



如果我们用 left join查询 :

select  a.id as financing_account_id ,a.amount,b.id as bid_id,b.bid_amount
from cd_financing_account a left join cd_bid b  on a.id=b.financing_account_id  where a.user_id=2762;

查询结果:




以上就是两者的区别:试项目需求而决定;



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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值