网易首页 > 网易号 > 正文 申请入驻

left join和left outer join 有什么区别?这样解释通俗易懂

0
分享至

作为一名java程序员,求职面试时也会遇到mysql问题,有次我到一家软件面试,就遇到有一道笔试题是考核关于sql 的。

left join和left outer join 有什么区别?

关于left join我平时编写sql表关联时用得比较多,但对于left outer join我很少用到,所以对于两者之间有什么区别,我没搞懂,于是这道题目有没有作答,面试官看了也问了下,我也说不出个所以然,那次面试总体也不太理想。

join对于接触过数据库的人,这个词都不陌生,而且很多人很清楚各种join,也有的人对这个理解不是很透彻。

今天我们来看看这两者有什么不同。

首先我们来说结果,两者之间没有本质上的区别,用法都一样。

下面我们来实例来验证下。

首先,我们创建两张表,第一张表命名为tb_user(用户表),第二张表命名为tb_user_class(用户班级表)

-- 用户表

create table `tb_user` (`id` int(11) not null,`user_name` varchar(255) default null,primary key (`id`)) engine=innodb default charset=utf8-- 用户班级表create table `tb_user_class` (`id` int(11) not null,`class_name` varchar(255) default null,`user_id` int(11) not null,primary key (`id`)) engine=innodb default charset=utf8

然后分别往这两张表上添加一些数据

insert into tb_user(id,user_name) values(1,'张三');insert into tb_user(id,user_name) values(2,'李四');insert into tb_user(id,user_name) values(3,'小红');insert into tb_user(id,user_name) values(4,'小明');insert into tb_user(id,user_name) values(5,'小林');insert into tb_user(id,user_name) values(6,'');

insert into tb_user_class(id,class_name,user_id) values(3,'3班',3);insert into tb_user_class(id,class_name,user_id) values(4,'4班',4);insert into tb_user_class(id,class_name,user_id) values(5,'5班',5);

下面我们用关联表查询这两张表

一、left join(左连接)

顾名思义,就是“左连接”,表1左连接表2,以左为主,表示以表1为主,关联上表2的数据,查出来的结果显示左边的所有数据,然后右边显示的是和左边有交集部分的数据。如下:

-- left join

select a.id, a.user_name, b.class_namefrom tb_user aleft join tb_user_class b on a.id =b.user_id

执行上面的SQL输出结果如下:

二、right join(右连接)

“右连接”,表1右连接表2,以右为主,表示以表2为主,关联查询表1的数据,查出表2所有数据以及表1和表2有交集的数据,如下:

-- right join

select a.id, .user_name, b.class_namefrom tb_user aright join tb_user_class b on a.id =b.user_id

执行上面的SQL输出结果如下:

三、join

join,其实就是“inner join”,为了简写才写成join,两个是表示一个的,内连接,表示以两个表的交集为主,查出来是两个表有交集的部分,其余没有关联就不额外显示出来,这个用的情况也是挺多的,如下

-- join

select a.id, a.user_name, b.class_namefrom tb_user ajoin tb_user_class b on a.id =b.user_id

执行上面的SQL输出结果如下:

四、inner join(内连接)

内连接是最常见的一种连接,只连接匹配的行。

-- inner join

select a.id, a.user_name, b.class_namefrom tb_user ainner join tb_user_class b on a.id =b.user_id

五、left outer join

左连接,简单来说,如果是左连接,则保留左表所有的行;即使在右表中没有匹配的行。

-- left outer join

select a.id, a.user_name, b.class_namefrom tb_user aleft outer join tb_user_class b on a.id =b.user_id

细心的你会发现 inner join与join执行结果集是相同的。

left outer join 和 left join结果集是一样的。

现在我们再回过头看看,left join和left outer join有什么区别?

我们可以直接回答没区别。

如果非要说有什么区别的话,那就是left outer join 比left join 多了一个outer。

left join是left outer join的缩写,所以作用是一样的。不过我见过经验丰富的数仓工程师,在关联维表时喜欢用left outer join,这或许是一种个人习惯吧。

另外在sql里没有大小写区分,也就是left join和LEFT JOIN都是可以的。值得注意的是,在编写sql时,尽量保持大小写统一,不要一会儿大写,一会儿小写,虽然大小写混合,执行结果数据集是一致的,但还是统一比较好,做技术严谨点好。

总结:

  • left join: 包含左表的所有行,对应的右表行可能为空
  • right join: 包含右表的所有行,对应的左表行可能为空
  • inner join: 只包含左右表都匹配并且不为空的行
  • join: 只包含左右表都匹配并且不为空的行
  • left outer join: 包含左表的所有行,对应的右表行可能为空。

由于笔者知识及水平有限,文中错漏之处在所难免,如有不足之处,欢迎交流。

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
A股:今天,6月1日,行情很反常,三个信号来了!

A股:今天,6月1日,行情很反常,三个信号来了!

明心
2026-06-01 11:44:04
道心破碎?帕金斯:霍姆格伦不仅遭文班碾压,还被夺走了灵魂

道心破碎?帕金斯:霍姆格伦不仅遭文班碾压,还被夺走了灵魂

懂球帝
2026-05-31 15:38:12
火箭内线配置接近完美!4位高塔坐镇,或迎新秀中锋!外线需补强

火箭内线配置接近完美!4位高塔坐镇,或迎新秀中锋!外线需补强

熊哥爱篮球
2026-06-01 12:11:33
广西18岁女失联:深夜出行,反常行为不止清空余额,朋友圈现端倪

广西18岁女失联:深夜出行,反常行为不止清空余额,朋友圈现端倪

小虎新车推荐员
2026-06-01 06:24:11
年仅25岁!河南优秀唢呐手杜渊博去世,友人曝原因,疑与熬夜有关

年仅25岁!河南优秀唢呐手杜渊博去世,友人曝原因,疑与熬夜有关

裕丰娱间说
2026-06-01 09:04:14
徐晨皓现身北京相亲公园,看中拥有两套房子和五个奶茶店的女生

徐晨皓现身北京相亲公园,看中拥有两套房子和五个奶茶店的女生

凤幻洋
2026-05-31 16:06:23
游客在野外水潭溺水沉底,广东大哥手拿绳子两次潜入深潭救人:男子获救,正在医院康复

游客在野外水潭溺水沉底,广东大哥手拿绳子两次潜入深潭救人:男子获救,正在医院康复

台州交通广播
2026-05-31 11:51:51
陪玩陪睡都是毛毛雨!王思聪前女友曝“丑闻”,王家彻底坐不住了

陪玩陪睡都是毛毛雨!王思聪前女友曝“丑闻”,王家彻底坐不住了

一曲一场談
2026-04-09 13:56:12
50岁真人秀女星涉艳照门,家人已全面切割

50岁真人秀女星涉艳照门,家人已全面切割

浅遇时光
2026-05-30 00:56:38
傅斯年最终决定前往台湾,北平解放之后,他听的太多,担忧太多

傅斯年最终决定前往台湾,北平解放之后,他听的太多,担忧太多

王知鱼说历史
2026-05-31 07:43:50
正式官宣!国务院放大招:城里有房家庭都乐开花,不仅宜居还增值

正式官宣!国务院放大招:城里有房家庭都乐开花,不仅宜居还增值

阿离家居
2026-05-29 16:56:30
王毅成大明星了?访问加国途中,加参议员竟说:请给我您的签名

王毅成大明星了?访问加国途中,加参议员竟说:请给我您的签名

离离言几许
2026-05-31 20:10:00
张镇麟太香了!

张镇麟太香了!

新民晚报
2026-06-01 09:08:06
绝不向中国低头!宁愿裁员9000人公司破产,也不接受中国的帮助?

绝不向中国低头!宁愿裁员9000人公司破产,也不接受中国的帮助?

混沌录
2026-04-11 15:18:05
对于今天周一A股,我只说3句话:第一,4055点很可能刚刚才开始!

对于今天周一A股,我只说3句话:第一,4055点很可能刚刚才开始!

趋势清风侠
2026-06-01 08:15:04
中国没给面子,普京回国后认清现实,沉默一周后,最终选择妥协

中国没给面子,普京回国后认清现实,沉默一周后,最终选择妥协

爱下厨的阿酾
2026-05-31 21:10:53
秦雪健身照美图

秦雪健身照美图

动物奇奇怪怪
2026-06-01 09:31:00
蒋经国糖尿病严重却喜欢甜品,医生劝后被骂:病你们治,吃啥我定

蒋经国糖尿病严重却喜欢甜品,医生劝后被骂:病你们治,吃啥我定

兴趣知识
2026-05-30 19:09:10
今年夏季迎来不少喜事,添丁又来财,好事一桩接一桩的3生肖

今年夏季迎来不少喜事,添丁又来财,好事一桩接一桩的3生肖

毅谈生肖
2026-06-01 11:02:17
中越曾争了9年的老山,如今究竟属于谁?一座山而已为啥都要争?

中越曾争了9年的老山,如今究竟属于谁?一座山而已为啥都要争?

史之铭
2026-06-01 02:21:18
2026-06-01 13:28:49
洪生鹏
洪生鹏
专注青少年厌学/休学问题。以专业共情陪伴成长,助力青少年突破困境,重拾学习动力,促进家庭和谐发展。
1900文章数 1882关注度
往期回顾 全部

头条要闻

普京将乌无人机残骸交于美方 被指发表"极其危险言论"

头条要闻

普京将乌无人机残骸交于美方 被指发表"极其危险言论"

体育要闻

哭过之后,文班亚马想给波波维奇打电话

娱乐要闻

张凌赫活动商场玻璃被挤爆5人受伤

财经要闻

网红驱蚊产品,标注化妆品竟含农药成分

科技要闻

关停三年后,天涯社区今起开放访问

汽车要闻

上市三周交付3603台!华境S跻身旗舰大六座第一梯队

态度原创

本地
亲子
房产
公开课
军事航空

本地新闻

用剪纸的方式,打开江苏扬州

亲子要闻

深夜时谈 杨澜:内在的价值感,是父母给予孩子最好的礼物

房产要闻

红动五月!全国抢入核心资产,广州盯紧凯旋新世界!

公开课

李玫瑾:为什么性格比能力更重要?

军事要闻

韩国最大军工企业爆炸 已造成5人死亡

无障碍浏览 进入关怀版