mysql 左、右、内连接

1.内连: 
如下,user表中有userid,username,userage,userthing字段属性,colleagues表里有collid,collname,collsex,collposition字段属性,当两张表内连接,只会查询两张表里通过on条件都满足的数据,即user表和colleagues表都有的数据。

查询名字相同的那条数据,也就是说,user表里和colleagues表名字都相同的那条数据,即要求必须同时满足两张表。

     SELECT * FROM USER INNER JOIN colleagues ON user.username = colleagues.collname
  • 1

先看两张表里原来的数据,user表的和colleagues表的数据分别如下图: 
这里写图片描述

这里写图片描述

在看通过上述的SQL内连查询语句查出来的结果:

这里写图片描述

查询出的结果是必须是条件满足两张表,即两张表共有的数据。

2.左连:

左连本身就是以左表数据为主,查符合条件的数据,还是以user表和colleagues表为例,user表中原来的数据和colleagues表中原来的数据如下:

这里写图片描述

这里写图片描述

左连的语句如下:

SELECT * FROM USER LEFT JOIN colleagues ON user.username = colleagues.collname ;
  • 1

查询结果如下:

这里写图片描述

可以看出满足名字相同的只有yaoshuting一条数据,但是user表中的数据都会显示出来,即便在colleagues表中是没有数据的。

当给左连再加上where条件判断时,如下:

SELECT * FROM USER LEFT JOIN colleagues ON user.username = colleagues.collname WHERE colleagues.collname IS NOT NULL;
  • 1

结果如下:只查出左连后,还满足where条件的数据。

这里写图片描述

3.右连:

右连本身就是以右表数据为主,查符合条件的数据,还是以user表和colleagues表为例,user表中原来的数据和colleagues表中原来的数据上述有,这里直接给右连的结果,如下:

SELECT * FROM USER RIGHT JOIN colleagues ON user.username = colleagues.collname;
  • 1

这里写图片描述

能看出来本身colleagues表中就只有3条数据,在查出名字相同的满足user表的数据,以colleagues表为主,也可以写成colleagues left join user,这样也是以colleagues表数据为主的,即user left join colleagues 等同于 colleagues right join user。

小结: 
1.内连就是抓取两张表共同满足on条件后的数据。 
2.左连就是以左表数据为主,再查出满足on条件后的数据。 
3.右连就是以右表数据为主,再查出满足on条件后的数据

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值