mysql左连接查询举例_mysql左右连接查询(有示例图)

mysql左连接查询举例_mysql左右连接查询(有示例图)小小的连接查询,其实里面有很多学问,今天我就来简单剖析一下。左连接,右连接,内连接的本质:将两个表的数据依据一定条件横向连接起来。给出建表语句:————————————————–createtabletest1(idint,namevarchar(10))createtabletest2(idint,namevarc…

大家好,又见面了,我是你们的朋友全栈君。

小小的连接查询,其实里面有很多学问,今天我就来简单剖析一下。

左连接,右连接,内连接的本质:将两个表的数据依据一定条件横向连接起来。

给出建表语句:

————————————————–

create table test1(

id int,

name varchar(10)

)

create table test2(

id int,

name varchar(10)

)

INSERT INTO `test1` VALUES (1,’2′);

INSERT INTO `test1` VALUES (1,’2′);

INSERT INTO `test1` VALUES (2,’1′);

INSERT INTO `test1` VALUES (2,’2′);

INSERT INTO `test1` VALUES (3,’1′);

INSERT INTO `test2` VALUES (1,’2′);

INSERT INTO `test2` VALUES (2,’1′);

INSERT INTO `test2` VALUES (2,’2′);

————————————————–

左连接sql:select * from  test1 a left join test2 b on a.id=b.id

如下为左连接示例图:

0818b9ca8b590ca3270a3433284dd417.png

1,理解左连接查询方式(以两表id相等作为on的条件):

先将左表数据查出,然后根据on后面的条件,将右表中凡是id与左表id相等的记录都查出来,与匹配的左表记录依次排成一行或多行,若无匹配的记录,则显示null。

举例:select * from  test1 a left join test2 b on a.id=b.id

说明:先将左表数据查出,然后根据on后面的条件,将右表中凡是id与左表id相等的记录都查出来,与匹配的左表记录依次排成一行或多行,若无匹配的记录,则显示null。

在本例中,我画了6根线,每条线都表示了一条查询结果记录。

当ID为1时:左表有2条ID为1的记录,右表有1条。先查左表的第一条,然后再查询右表中所有ID与左表第一条记录的ID相等(即ID为1)的记录,因右表只有1条记录的ID为1,因此得出查询结果的第一条记录:1,2,1,1。

第二条记录查询方式也同上。

当ID为2时:左右表各有2条ID为2的记录。也是同上,当查左表第一条ID为2的记录时,因右表中有2条ID为2的记录,因此查询结果会有两条,即左表的1条记录会和右表的2条记录一一配对。

第二条记录查询方式也同上。

对于id为3的记录,因右表没有ID为3的记录,因此右边显示为null。

————————————————–

2,理解了左连接之后,右连接也就不难了。

右连接语句:select * from  test1 a right join test2 b on a.id=b.id

右连接查询结果:

0818b9ca8b590ca3270a3433284dd417.png

————————————————–

3,而内连接,则是把ID只存在于某一个表中的记录给过滤了。

以下3条sql语句等价:

select * from  test1 a  join test2 b on a.id=b.id

select * from  test1 a inner join test2 b on a.id=b.id

select * from  test1 a , test2 b where a.id=b.id

内连接查询结果:

0818b9ca8b590ca3270a3433284dd417.png

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/140925.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • pycharm激活码【注册码】

    pycharm激活码【注册码】,https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月18日
    35
  • redis缓存雪崩 缓存穿透 缓存击穿如何解决_redis穿透和雪崩解决

    redis缓存雪崩 缓存穿透 缓存击穿如何解决_redis穿透和雪崩解决一:redis雪崩redis雪崩是指redis在某个时间大量失效,突然造成数据库访问压力急剧增大,像雪崩一样,redis雪崩危害巨大,甚至有可能服务器宕机,给公司造成巨大的经济损失。解决方案:设置超时时间的时候要设置随机值,不要设置固定值*缓存雪崩:key在同一时间失效,导致大量请求去访问数据库*返回min和max之间的一个随机秒数 privateLonggetRandomExpirationTime(Integermin,Integermax){

    2022年9月14日
    0
  • BZOJ1915[USACO 2010 Open Gold 1.Cow Hopscotch]——DP+斜率优化

    BZOJ1915[USACO 2010 Open Gold 1.Cow Hopscotch]——DP+斜率优化

    2022年4月3日
    41
  • 热插拔——矿机先行利器[通俗易懂]

    热插拔——矿机先行利器[通俗易懂]IPFSFilecoin上线在即,准备挖矿的小伙伴们已近磨刀霍霍了,都在积极选择自己心仪的矿机。但是如今市场上矿机众多,对于矿机的配置也是众说纷纭,相信许多的小伙伴也是十分茫然,当然,星际魔方今天只谈专业IPFS矿机,家用电脑组装的矿机我们后期再谈。工欲善其事,必先利其器。Fliecoin挖矿就是一种优质资源竞争的行为。形象理解就类似于嘀嘀打车,一个人想去另一个地方,在滴滴下单,司机开始抢单…

    2022年9月2日
    4
  • ipconfig 和ip addr的区别「建议收藏」

    ipconfig 和ip addr的区别「建议收藏」今天在玩DNS解析记录的追踪。nslookup查了一下我们业务域名对应的ip。得到一个完全不知道的ip。此时我登录到应用服务器上,使用ipa查看了该服务器的网络配置。并没有这个ip。百思不得其解。搞了一天终于明白了,一共两个问题:1、ipaddr和ifconfig显示的不一样?使用ifconfig发现了使用nslookup查到的ip,而ipaddr竟然不显示那个ip地址。原因如下:net-tools起源于BSD,自2001年起,Linux社区已经对其停止维护..

    2022年7月27日
    17
  • 【Anconda】关于安装Anaconda3各种各样的问题,吐血总结!!!(failed to create anacoda menu!!++)「建议收藏」

    【Anconda】关于安装Anaconda3各种各样的问题,吐血总结!!!(failed to create anacoda menu!!++)「建议收藏」昨天总结了装python和pycharm。本来想着马上接着总结Anaconda的,谁知道,这一安装,竟然花了我一天一夜的时间,(悲伤辣么大啊简直)。遇到了各种各样的问题,重装20几遍,每次问题都不同还。(掩面悲伤)直到刚才总算是可以了。面对问题的时候第一想法就是百度,结果尝试了所有百度的方法仍然无法解决问题。还是自己太笨了。总之,还是把自己遇到的问题总结一下把,以防不…

    2022年6月2日
    84

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号