MySQL简单使用二、join使用

--------join-----------
inner join:内连接 等值连接
left join:左链接
right join:右链接

create table testa(aid int,aname varchar(100));
create table testb(bid int,bname varchar(100),age int);

一、单个on条件

testa表

aid  aname
1    zhangsan
2    lisi
3    wangwu
4    hanmeimei

testb表

bid  bname      age
1    zhangsan   18
2    lisi       20
3    wangwu     25
5    lilei      23
  1. left join

    select 
    a.aid,a.aname,b.bid,b.bname 
    from testa a
    left join 
    testb b 
    on
    a.aid = b.bid
    1    zhangsan    1    zhangsan
    2    lisi        2    lisi
    3    wangwu      3    wangwu
    4    hanmeimei   null null
    

    left join:右表去匹配左表,以左表数据为准(on后边的条件),且最全,匹配不到则为null值

  2. right join

    select 
    a.aid,a.aname,b.bid,b.bname 
    from testa a
    right join 
    testb b 
    on
    a.aid = b.bid
    1    zhangsan   1    zhangsan 
    2    lisi       2    lisi     
    3    wangwu     3    wangwu   
    null null       4    hanmeimei
    

    right join:左表去匹配右表,以右表数据为准(on后边的条件),且最全,匹配不到则为null值

  3. inner join

    select 
    a.aid,a.aname,b.bid,b.bname 
    from testa a
    inner join 
    testb b 
    on
    a.aid = b.bid
    1    zhangsan   1    zhangsan 
    2    lisi       2    lisi     
    3    wangwu     3    wangwu 
    

    inner join:等值匹配,两边表都要存在

二、多个on条件

testa表

aid  aname
1    zhangsan1
2    lisi1
3    wangwu
4    hanmeimei

testb表

bid  bname      age
1    zhangsan2   18
2    lisi2       20
3    wangwu      25
5    lilei       23
  1. left join
    select 
    a.aid,a.aname,b.bid,b.bname 
    from testa a
    left join 
    testb b 
    on
    a.aid = b.bid and a.aname = b.bname;
    
    1    zhangsan1   null  null
    2    lisi1       null  null
    3    wangwu      3     wangwu
    4    hanmeimei   null  null
    

三、数值相加以及大小、区间

select 
a.ename,a.deptno,(a.sal+IFNULL(a.comm, 0)) as salcomm ,
s.grade,
b.dname,b.loc
from emp a
left join dept b on a.deptno=b.deptno
left join salgrade s 
on (a.sal+IFNULL(a.comm, 0)) between s.losal and s.hisal;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

蜗牛!Destiny

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值