【MySQL】inner join 与 left join 的区别

28 篇文章 2 订阅
订阅专栏


简介

  • left join(左联接) 返回包括左表中的所有记录和右表中联结字段相等的记录
  • right join(右联接) 返回包括右表中的所有记录和左表中联结字段相等的记录
  • inner join(等值连接) 只返回两个表中联结字段相等的行

例:

表A记录如下:
aID     aNum
1     a20050111
2     a20050112
3     a20050113
4     a20050114
5     a20050115

表B记录如下:
bID     bName
1     2006032401
2     2006032402
3     2006032403
4     2006032404
8     2006032408

left join

sql语句如下:

select * from A left join B  on A.aID = B.bID

结果如下:

aID     aNum     bID     bName
1     a20050111    1     2006032401
2     a20050112    2     2006032402
3     a20050113    3     2006032403
4     a20050114    4     2006032404
5     a20050115    NULL     NULL

(所影响的行数为 5 行)

结果说明:

left join是以A表的记录为基础的,A可以看成左表,B可以看成右表,left join是以左表为准的.

换句话说,左表(A)的记录将会全部表示出来,而右表(B)只会显示符合搜索条件的记录(例子中为: A.aID = B.bID).

B表记录不足的地方均为NULL


right join

sql语句如下:

select * from A right join B  on A.aID = B.bID

结果如下:

aID     aNum     bID     bName
1     a20050111    1     2006032401
2     a20050112    2     2006032402
3     a20050113    3     2006032403
4     a20050114    4     2006032404
NULL     NULL     8     2006032408

(所影响的行数为 5 行)

结果说明:

仔细观察一下,就会发现,和left join的结果刚好相反,这次是以右表(B)为基础的,A表不足的地方用NULL填充


inner join

sql语句如下:

select * from A inner join B  on A.aID = B.bID

结果如下:

aID     aNum     bID     bName
1     a20050111    1     2006032401
2     a20050112    2     2006032402
3     a20050113    3     2006032403
4     a20050114    4     2006032404

结果说明:

很明显,这里只显示出了 A.aID = B.bID的记录.这说明inner join并不以谁为基础,它只显示符合条件的记录.


图解SQL的inner join、left join、right join、full outer join、union、union all的区别

转自: https://www.cnblogs.com/logon/p/3748020.html

假设我们有两张表。Table A 是左边的表。Table B 是右边的表。其各有四条记录,其中有两条记录name是相同的,如下所示:让我们看看不同JOIN的不同

image

INNER JOIN

SELECT * FROM TableA <strong>INNER JOIN </strong>TableB ON TableA.name = TableB.name

image

FULL [OUTER] JOIN

(1)

SELECT * FROM TableA <strong>FULL OUTER JOIN </strong>TableB ON TableA.name = TableB.name

image

image

image

RIGHT [OUTER] JOIN

RIGHT OUTERJOIN 是后面的表为基础,与LEFT OUTER JOIN用法类似。这里不介绍了。

UNION 与 UNION ALL

UNION 操作符用于合并两个或多个 SELECT 语句的结果集。
请注意,UNION 内部的 SELECT 语句必须拥有相同数量的列。列也必须拥有相似的数据类型。同时,每条 SELECT 语句中的列的顺序必须相同。UNION 只选取记录,而UNION ALL会列出所有记录。

(1)

SELECT name FROM TableA <strong>UNION </strong>SELECT name FROM TableB`

image

选取不同值

(2)

SELECT name FROM TableA <strong>UNION ALL </strong>SELECT name FROM TableB

image

全部列出来

(3)注意:

SELECT * FROM TableA UNION SELECT * FROM TableB

image

由于 id 1 Pirate   与 id 2 Pirate 并不相同,不合并

还需要注册的是我们还有一个是“交差集” cross join, 这种Join没有办法用文式图表示,因为其就是把表A和表B的数据进行一个N*M的组合,即笛卡尔积。表达式如下:SELECT * FROM TableA CROSS JOIN TableB

这个笛卡尔乘积会产生 4 x 4 = 16 条记录,一般来说,我们很少用到这个语法。但是我们得小心,如果不是使用嵌套的select语句,一般系统都会产生笛卡尔乘积然再做过滤。这是对于性能来说是非常危险的,尤其是表很大的时候。

mysql查询中内连接和左连接有什么区别
舒一笑的博客
05-24 893
需要注意的是,内连接和左连接仅是连接操作的两种常见类型,还有其他类型的连接(如右连接、全连接等)。在MySQL查询中,内连接(INNER JOIN)和左连接(LEFT JOIN)是常用的连接类型,它们在连接多个表时具有不同的行为和结果。左连接返回左表(左侧表)中的所有行,以及与右表(右侧表)中连接列匹配的行。另外,使用连接操作时,请确保在连接列上存在适当的索引,以提高查询性能。内连接返回满足连接条件的行,即只返回两个表中连接列匹配的行。如果有多个匹配的行,左连接将返回所有可能的组合。
mysql innerleft优化_浅谈mysql中的left joininner join性能及优化策略
weixin_34708601的博客
01-27 1634
前言看一下 下面的sql语句:select*fromaleftjoinbona.x=b.xleftjoinconc.y=b.y这样的多个left join组合的时候,总是感觉心里有点不舒服,而且总觉得这种写法是有问题的,一方面有点好奇,直接用inner join会怎样呢?差别在哪里?后续使用inner join发现速度要比left join快一些,所以这边就研究一...
SQL左连接、右连接、笛卡尔积的表现形式
飘过的春风
03-25 7401
表A记录如下: aID aNum 1 a20050111 2 a20050112 3 a20050113 4 a20050114 5 a20050115 表B记录如下: bID bName 1 2006032401
MySQL left join、right join以及inner join区别
最新发布
sheji888的专栏
07-16 505
连接类型描述示例中的表现LEFT JOIN返回左表中的所有记录以及右表中匹配的行。右表中未匹配的行以NULL填充。列出了所有员工,包括未分配部门的员工(部门名称为NULL)。RIGHT JOIN返回右表中的所有记录以及左表中匹配的行。左表中未匹配的行以NULL填充。列出了所有部门,包括没有员工的部门(员工姓名为NULL)。INNER JOIN只返回两个表中匹配连接条件的记录。只列出了已经分配到部门的员工及其所属部门。
mysqlinner joinleft join区别
weixin_43993064的博客
05-28 634
INNER JOIN 只返回两个表中满足连接条件的匹配行。换句话说,它只返回那些在连接的两个表中都有匹配值的行。如果某一行在其中一个表中没有匹配项,那么这行不会出现在结果集中。
MySQL Inner JoinLeft Join 详解
小羊的博客
05-16 2208
MySQL 中常用的 Inner JoinLeft Join 两种连接语句,包括语法、应用场景、优缺点以及相应的代码示例。Inner Join 只返回两个表中都存在的行,而 Left Join 则返回左表中所有的行以及与右表匹配的行(如果有的话),并在右表中没有匹配的地方补充 NULL 值。在使用这两种 Join 时,需要根据实际情况选择合适的语句,以达到最佳的查询效果。
mysqlleft joininner join的详细用法
俩科的博客
12-13 2万+
join用法 1.inner join,内连接,显示两个表中有联系的所有数据; 2.left join,左链接,以左表为参照,显示所有数据,右表中没有则以null显示 3.right join,右链接,以右表为参照显示数据,,左表中没有则以null显示 例子 如图两个表 右连接 SELECT * FROM ketest as b RIGHT JOIN keketest as c on b.id = c.id; 左连接 SELECT * FROM ketest as b LEFT JOIN keket
超详细mysql left join,right join,inner join用法分析
09-14
在这个超详细的分析中,我们将深入探讨LEFT JOIN、RIGHT JOIN以及INNER JOIN的用法。 1. LEFT JOIN(左连接) LEFT JOIN返回所有左表(在本例中为表A)的记录,即使在右表(表B)中没有匹配的记录。如果右表中没有...
left joininner join区别
热门推荐
Nulltu的博客
11-24 5万+
一.Join查询原理 查询原理:MySQL内部采用了一种叫做 nested loop join(嵌套循环连接)的算法。Nested Loop Join 实际上就是通过驱动表的结果集作为循环基础数据,然后一条一条的通过该结果集中的数据作为过滤条件到下一个表中查询数据,然后合并结果。如果还有第三个参与 Join,则再通过前两个表的 Join 结果集作为循环基础数据,再一次通过循环查询条件到第三个表中查询数据,如此往复,基本上MySQL采用的是最容易理解的算法来实现join。所以驱动表的选择非常重要,驱动表的数据
mysql inner join_MySQL JOIN 语法说明与 INNER JOIN 语法用法实例
weixin_29214199的博客
01-18 1110
MySQL JOIN 语法概述SQL(MySQL) JOIN 用于根据两个或多个表中的字段之间的关系,从这些表中得到数据。JOIN 通常与 ON 关键字搭配使用,基本语法如下:... FROM table1 INNER|LEFT|RIGHT JOIN table2 ON conditionatable1 通常称为左表,table2 称为右表。ON 关键字用于设定匹配条件,用于限定在结果集合中想要哪...
Mysqlinnerjoin,leftjoin,rightjoin详解.pdf
10-27
Mysqlinner joinleft join、right join 详解 Mysql 中的连接查询是指从多个表中检索数据,并将它们组合成一个结果集。inner joinleft join 和 right joinMysql 中三种最常用的连接查询方式。 inner ...
MysqlLeft Join、Right JoinInner Join区别
qq_23350817的博客
06-06 177
Mysql
mysqlinnerleft_关于Mysqlinner join , left join , right join区别
weixin_29098367的博客
02-10 370
关于Mysqlinner join , left join , right join区别 ,他们分别应用在什么情景呢? 现在我们 有2个表 一个是 person 表 一个是 Orders表 结构如下: person表 Id_P LastName FirstName Address City 1 Adams John Oxford Street London 2 Bush George F关...
inner joinleft join 之间的区别
可小辉的博客
07-17 611
一、sql的left join 、right joininner join之间的区别   left join(左联接) 返回包括左表中的所有记录和右表中联结字段相等的记录   right join(右联接) 返回包括右表中的所有记录和左表中联结字段相等的记录   inner join(等值连接) 只返回两个表中联结字段相等的行 举例如下: -------------------------------------------- 表A记录如下: aID     aNum 1     a20050..
mysqlleft join ,right joininner join区别
lks的博客
08-18 229
1.left join的使用 SELECT tu.*,tr.* from t_a_user AS tu LEFT JOIN t_a_user_role as tur on tu.id = tur.user_id LEFT JOIN t_a_role AS tr ON tur.user_id = tr.id;   显示所有的用户信息包含某个用户在中间表中没有数据,也就是没有角色的用户也会显...
mysqlleft join,right joinjoin(inner join)的区别
csdnwyf的博客
08-28 559
left join:以左表为主,查出来的结果显示左表的所有数据,然后右表显示的是和左表有交集部分的数据。 right join:以右表为主,查出来的结果是显示右表中的所有数据,然后左表显示的是和右表有交集的数据。 join(inner join):查出来的是两个表中有交集的部分,没有交集的部分不显示。 ...
mysqlleft join,right join,inner join区别
长风破浪会有时,直挂云帆济沧海!
12-19 493
sql查询中有一个非常重要的环节就是表的关联查询,一般使用left join,right join,inner join,他们之间的区别是什么呢? 下面我们通过具体的sql语句来演示,演示用的表名为test1/test2: 从上面的截图可以很容易看出来三者之间的区别left join 查出来的数据条数是以
MySQL JOIN (innerleft区别)
u013402772的专栏
04-27 8345
MySQL JOIN 的分类 inner join(内连接):取得两个表中存在连接匹配关系的记录 left join (左连接):以左表为基准(取左表所有记录),右表匹配向左表 right join(右连接):与left join 相反
MYSQL inner joinleft Join区别
10-21
MySQL中的Inner JoinLeft Join都是用于在两个或多个表中查找共有的行的SQL查询语句,但它们之间有一些区别Inner Join只返回两个表中都存在的匹配行,即只返回两个表中都符合连接条件的行。而Left Join则返回左表中的所有行,以及右表中符合连接条件的行,如果右表中没有符合条件的行,则返回NULL值。 因此,如果需要返回两个表中都存在的匹配行,则使用Inner Join;如果需要返回左表中的所有行,以及右表中符合条件的行,则使用Left Join。 至于哪个更快,这取决于具体的情况,因为它们的性能取决于表的大小、索引、连接条件等因素。在某些情况下,Inner Join可能比Left Join更快,而在其他情况下,Left Join可能更快。
写文章

热门文章

  • union 和 union all (记录合并) 87251
  • Cast(字段名 as 转换的类型 ) 转换类型 32747
  • Spring的@Scheduled注解实现定时任务 29632
  • distinct (去重) 29458
  • Java常用软件官网下载地址【汇总】 25489

分类专栏

  • 学习路线、帮助文档、面试总结
  • 学习线路 1篇
  • 文档 1篇
  • 面试 3篇
  • 常用软件 2篇
  • IDEA 3篇
  • Eclipse 15篇
  • Maven 4篇
  • Git 3篇
  • SVN 1篇
  • postman 1篇
  • Tomcat 7篇
  • Nginx 1篇
  • JMeter 1篇
  • Fiddler 1篇
  • Typora 1篇
  • 常用工具类 28篇
  • 计算机基础 3篇
  • 数据库
  • MySQL 28篇
  • Redis 14篇
  • 技术及杂谈 23篇
  • 框架
  • Spring 5篇
  • MyBatis 2篇
  • 安全框架 3篇
  • 定时任务 5篇
  • SpringBoot 29篇
  • SpringCloud 3篇
  • 分布式 5篇
  • ELK 1篇
  • Zookeeper 1篇
  • Kafka 1篇
  • Docker 3篇
  • Java 基础
  • Java 基础知识 8篇
  • JVM 1篇
  • IO 1篇
  • 网络 1篇
  • 多线程 5篇
  • 队列 5篇
  • 设计模式 2篇
  • Linux 11篇
  • 前端 9篇
  • Go 1篇

最新评论

  • SpringBoot2.x 整合 easyexcel 进行报表导入导出

    CSDN-Ada助手: 多亏了你这篇博客, 解决了问题: https://ask.csdn.net/questions/7982648, 请多输出高质量博客, 帮助更多的人

  • MySql复制一列到另一列

    Li9htning: 请问如果约束不同是如何处理的呢?比如我要从T1的C1中的数据复制到T2中的C2,但是C1最大值为100,而C2最大值约束为90,那么C1中大于90的数据在复制时会发生什么情况呢?

  • 页面按钮点击后10秒内不可点击(前端防止重复提交)

    齐大圣2012: 所以前后端都得做防重复提交

  • Jackson,Gson,Fastjson 的对比

    齐大圣2012: Jackson是单独一篇文章文中给有链接

  • distinct (去重)

    黄泓铭他哥: 俺的图图呢?

最新文章

  • MySQL专题
  • spring 面试专题
  • java中常见的锁
2021年40篇
2020年32篇
2019年96篇
2018年78篇
2017年21篇

目录

目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值

玻璃钢生产厂家实惠的玻璃钢雕塑卡通浙江商业商场美陈厂家直销金华公园玻璃钢雕塑生产厂家玻璃钢观音菩萨雕塑太湖石玻璃钢卡通雕塑定做价格广东玻璃钢模型雕塑厂树脂玻璃钢雕塑现货玻璃钢雕塑需要注意哪些苏州春季商场美陈玻璃钢艺术雕塑嘉兴玻璃钢海豚雕塑价格找玻璃钢雕塑江苏校园玻璃钢雕塑哪家专业昆明户内玻璃钢雕塑生产厂家云南特色玻璃钢雕塑订做价格江西特色玻璃钢雕塑方法鸡西市玻璃钢雕塑景观透明玻璃钢雕塑生产厂家园林玻璃钢雕塑价格行情浙江室内商场美陈哪里有晋城泡沫玻璃钢人物雕塑菏泽泡沫玻璃钢彩绘雕塑福建环保玻璃钢雕塑定制广东园林玻璃钢雕塑四川公园玻璃钢雕塑供应商下城区玻璃钢金属雕塑私人定做浙江玻璃钢卡通雕塑生产logo图片玻璃钢雕塑石家庄个性化玻璃钢雕塑供应商云南商场美陈香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声单亲妈妈陷入热恋 14岁儿子报警汪小菲曝离婚始末遭遇山火的松茸之乡雅江山火三名扑火人员牺牲系谣言何赛飞追着代拍打萧美琴窜访捷克 外交部回应卫健委通报少年有偿捐血浆16次猝死手机成瘾是影响睡眠质量重要因素高校汽车撞人致3死16伤 司机系学生315晚会后胖东来又人满为患了小米汽车超级工厂正式揭幕中国拥有亿元资产的家庭达13.3万户周杰伦一审败诉网易男孩8年未见母亲被告知被遗忘许家印被限制高消费饲养员用铁锨驱打大熊猫被辞退男子被猫抓伤后确诊“猫抓病”特朗普无法缴纳4.54亿美元罚金倪萍分享减重40斤方法联合利华开始重组张家界的山上“长”满了韩国人?张立群任西安交通大学校长杨倩无缘巴黎奥运“重生之我在北大当嫡校长”黑马情侣提车了专访95后高颜值猪保姆考生莫言也上北大硕士复试名单了网友洛杉矶偶遇贾玲专家建议不必谈骨泥色变沉迷短剧的人就像掉进了杀猪盘奥巴马现身唐宁街 黑色着装引猜测七年后宇文玥被薅头发捞上岸事业单位女子向同事水杯投不明物质凯特王妃现身!外出购物视频曝光河南驻马店通报西平中学跳楼事件王树国卸任西安交大校长 师生送别恒大被罚41.75亿到底怎么缴男子被流浪猫绊倒 投喂者赔24万房客欠租失踪 房东直发愁西双版纳热带植物园回应蜉蝣大爆发钱人豪晒法院裁定实锤抄袭外国人感慨凌晨的中国很安全胖东来员工每周单休无小长假白宫:哈马斯三号人物被杀测试车高速逃费 小米:已补缴老人退休金被冒领16年 金额超20万

玻璃钢生产厂家 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化