Mysql 的 inner join、left join、right join

  1. inner join: 内连接,获取两个表中字段匹配关系的记录;
  2. left join: 左连接,获取左表所有记录,即使右表没有对应匹配的记录;
  3. right join: 右连接,与 LEFT JOIN 相反,用于获取右表所有记录,即使左表没有对应匹配的记录;

    (图片来自http://www.runoob.com/mysql/mysql-join.html)
    1.内连接
    这里写图片描述
    2.左连接
    这里写图片描述
    3.右连接
    这里写图片描述


tableA

idnameclass
1hu2
3a3
13q3
5g2
8l1

tableB

namevalteacher
hu10hut
g5gt
l55lt

1. 使用 inner join

select a.name, a.id, b.val from tableA as a INNER JOIN tableB as b on a.name = b.name;

结果

nameidval
hu110
g55
l855

tableAtableB有相同name的一行相连。
2. 使用left join

select a.name, a.id, b.val from tableA as a LEFT JOIN tableB as b on a.name = b.name;

结果

nameidval
hu110
g55
l855
a3null
q13null

在使用此sql语句

select * from tableA as a LEFT JOIN tableB as b on a.name > b.name;

结果

idnameclassnamevalteacher
13q3hu10hut
8l1hu10hut
1hu2g5gt
13q3g5gt
8l1g5gt
13q3l55lt
3a3nullnullnull
5g2nunullnull

从结果可以发现,左边表的所有数据都会被选择(不管满不满足on的条件),还是会被使用。

3.使用right join
left join类似,只是使用的是右边的表。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值