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)
上一篇 2022年5月8日 下午9:00
下一篇 2022年5月8日 下午9:00


相关推荐

  • 两个向量的点乘和叉乘怎么算_向量的点乘和叉乘

    两个向量的点乘和叉乘怎么算_向量的点乘和叉乘向量的点乘和叉乘 2019 12 0915 46 24 文 董月点乘 也叫数量积 结果是一个向量在另一个向量方向上投影的长度 是一个标量 叉乘 也叫向量积 结果是一个和已有两个向量都垂直的向量 点乘和叉乘的区别点乘是向量的内积 叉乘是向量的外积 点乘 点乘的结果是一个实数 a b a b cos 叉乘 叉乘的结果是一个向量几何意义点乘的几何意义可以用来表征或计算两个向量之间的夹角 以及在 b 向量在

    2026年3月17日
    2
  • wifi2.4频段怎么设置_怎么修改wifi频段

    wifi2.4频段怎么设置_怎么修改wifi频段在win10系统里,wifi一般会优先选择2.4g频段,一些公共wifi大家都挤在2.4g频段的话,会导致网络质量很大的下降,所以我们可以把wifi改成5hz首选频带,那么win10怎样将wifi变为支持5ghz频段呢,下面小编给大家分享win10将wifi改成5hz首选频带的方法。解决方法:1、点击win10操作系统上的开始菜单图标,在弹出的菜单中,点击设置。2、弹出设置窗口,在设置窗口界面中点…

    2022年10月20日
    6
  • win10家庭版升级到企业版

    win10家庭版升级到企业版由于某些原因要用到 docker 下载完后准备安装时 发现只能安装到 win10 企业版上 无奈 只能升级了 过程如下 win10 家庭版升级到企业版密钥 http www xitongcheng com jiaocheng xtazjc article 35407 html 更改密钥后 系统不一定是激活的 那就继续激活喽 nbsp Win101803 数字激活工具 HWIDGen h

    2026年3月18日
    2
  • java 创建txt_java创建txt文件并存入内容

    java 创建txt_java创建txt文件并存入内容本文实例为大家分享了java创建txt文件并存入内容的具体代码,供大家参考,具体内容如下importjava.io.BufferedReader;importjava.io.File;importjava.io.FileInputStream;importjava.io.FileOutputStream;importjava.io.IOException;importjava.io.I…

    2022年6月21日
    36
  • Internet Download Manager IDM 激活成功教程器

    Internet Download Manager IDM 激活成功教程器IDM 全名 InternetDown 是一款国外的多线程下载神器 简称 IDM InternetDown 支持多媒体下载 自动捕获链接 自动识别文件名 静默下载 批量下载 计划下载任务 站点抓取 队列等等是一款国外的老牌下载工具 互联网下载管理器 IDM 是一种提高下载速度 5 倍 恢复和下载时间表的工具 全面的错误恢复和恢复功能将

    2025年10月29日
    6
  • java代码走查_java代码开发完成后,代码走查规范

    java代码走查_java代码开发完成后,代码走查规范代码走查注意事项 1 不变的值 尽量写个常量类 2 尽量使用 if else 不要一直 if 去判断 3 减少循环调用方法查询数据库 4 dao 层尽量不要用逻辑 尽量在 service 里写业务逻辑 5 金额使用 Bigdecimal 类型的 0 00 这种格式靠右显示 6 iframe 的弹框 要放到 js 里 可以缓存 放到 jsp 里每次都需要加载 7 ajax 对应 success 对应一个 error 异常 尽量用 error 网络

    2026年3月18日
    3

发表回复

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

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