文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

一分钟搞明白Join、Left Join、Right Join的区别

2023-10-20 19:20

关注

全网最全Join、Left Join、Right Join的分析和总结!

目录

Join/Inner Join

Join/Inner Join语法

演示

结果

Left Join

Left Join语法

演示

结果

Right Join

Right Join语法 

演示

结果​

Full Join

 Full Join语法

总结

WHERE和ON的区别

演示

where语句

where语句执行过程

on语句

on语句执行过程


SQL中JOIN相关子句是用于将两个或者多个表结合起来,进行相关关操作。下面是一些关于JOIN的的功能描述,后面会进行详细的分析对比总结。

类型作用
1Join(Inner Join)内连接如果表之后至少有一个匹配,则返回行
2Left Join左连接返回左表所有的行,右表返回匹配行,不匹配的返回NULL
3Right Join右连接返回由表所有的行,左表返回匹配行,不匹配的返回NULL
4Full Join全连接只要其中一个表存在匹配,则返回行

下面将对每个查询进行分析和演示

测试表分别为:

city表

school表


Join/Inner Join

Join和Inner Join是相同的,表示在表中存在至少一个匹配时返回行,他们操作图如下:

Join/Inner Join语法

其对应的语法如下:

SELECT column_name(s)FROM table1INNER JOIN table2ON table1.column_name = table2.column_name;-- 或者SELECT column_name(s)FROM table1JOIN table2ON table1.column_name = table2.column_name;

演示

-- Inner JoinSELECT city.`name`,city.city,school.schoolFROM cityINNER JOIN schoolON city.`name` = school.`name`

结果

从结果中可以发现,他返回的是满足ON条件(city.`name` = school.`name`)的,where后面的目标查询(city.`name`,city.city,school.school)内容。


Left Join

LEFT JOIN 关键字从左表(table1)返回所有的行,即使右表(table2)中没有匹配。如果右表中没有匹配,则结果为 NULL。他们的操作图如下:

Left Join语法

语法:

-- 常用SELECT column_name(s)FROM table1LEFT JOIN table2ON table1.column_name = table2.column_name;-- 或者(在某些数据库中,LEFT JOIN 称为 LEFT OUTER JOIN)SELECT column_name(s)FROM table1LEFT OUTER JOIN table2ON table1.column_name = table2.column_name;

演示

-- Left JOINSELECT city.`name`,city.city,school.schoolFROM cityLEFT JOIN schoolON city.`name` = school.`name`

结果

从结果可以发现,返回的内容中,以左表city为准全部返回,右表school中满足条件的则返回对应目标查询内容,不满足的返回NULL。


Right Join

RIGHT JOIN 关键字从右表(table2)返回所有的行,即使左表(table1)中没有匹配。如果左表中没有匹配,则结果为 NULL。他和Left Join刚好相反。其对应的操作图如下:

Right Join语法 

语法:

-- 常用SELECT column_name(s)FROM table1RIGHT JOIN table2ON table1.column_name = table2.column_name;-- 或者SELECT column_name(s)FROM table1RIGHT OUTER JOIN table2ON table1.column_name = table2.column_name;

演示

-- Right JOINSELECT city.`name`,city.city,school.schoolFROM cityRIGHT JOIN schoolON city.`name` = school.`name`

结果

从结果可以发现,Right Join是以右表为准,返回所有目标查询数据,左表中满足ON条件的返回对应目标查询数据,不满足的返回NULL。


Full Join

注意:MySQL是不支持FULL JOIN这个操作的哈

FULL OUTER JOIN 关键字只要左表(table1)和右表(table2)其中一个表中存在匹配,则返回行.它相当于是 LEFT JOIN 和 RIGHT JOIN的结合。其对应的操作图如下:

 Full Join语法

语法:

SELECT column_name(s)FROM table1FULL OUTER JOIN table2ON table1.column_name = table2.column_name;

Full Join使用相对较少,这里不进行演示,感兴趣的同学,可以自行进行操作。


总结

  1. A Inner Join B:类似于取A和B的交集只取满足条件的相交部分

  2. A Left Join B:左连接,以左表A为基础,取A表的全部行,B满足On条件的取对应行,不满足的取NULL。

  3. A Right Join B:有连接,以右表B为基础,取B表的全部行,A满足On条件的取对应行,不满足的取NULL。

  4. A Full Outer Join B:类似于取A和B的并集全都取,但彼此没有对应的值就取NULL。


WHERE和ON的区别

数据库在通过连接两张或多张表的相关操作时候,会生成一张中间的临时表,然后再将这张临时表返回给用户。

下面以Left Join为例,使用ON和Where条件的区别如下:

演示

两张表分别如下:

tab1表

tab2表

where语句

select * from tab1 left join tab2 on (tab1.size = tab2.size)where tab2.name='AAA'

where语句执行过程

on语句

select * from tab1 left join tab2 on (tab1.size = tab2.size     and tab2.name='AAA')

on语句执行过程


来源地址:https://blog.csdn.net/qq_41171409/article/details/125255204

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     807人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     351人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     314人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     433人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     221人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-数据库
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯