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

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.

相关推荐
热点推荐
特朗普放弃抵抗,美大选提前终结?奥斯汀罕见对华交底,果不简单

特朗普放弃抵抗,美大选提前终结?奥斯汀罕见对华交底,果不简单

全民历史观
2024-06-16 09:19:07
县城的现状,一针见血!

县城的现状,一针见血!

深度知局
2024-05-18 18:01:33
1-1!申花反超海港重夺中超榜首,蒋圣龙乌龙送大礼!费利佩失点

1-1!申花反超海港重夺中超榜首,蒋圣龙乌龙送大礼!费利佩失点

易说体坛
2024-06-16 21:40:45
土耳其最大的悲剧,就是被中国女排逆转的时候,连招呼都不会打

土耳其最大的悲剧,就是被中国女排逆转的时候,连招呼都不会打

阿牛体育说
2024-06-16 15:43:54
闹大了!六六应对许敏十年监禁指控诉讼,暂停直播将起诉淮河医院

闹大了!六六应对许敏十年监禁指控诉讼,暂停直播将起诉淮河医院

娱乐小可爱蛙
2024-06-16 17:40:44
上海失踪女童遗体已找到 排除刑事案件

上海失踪女童遗体已找到 排除刑事案件

北青网-北京青年报
2024-06-15 17:05:07
负担不起税务局要求的消费税,宁波博汇化工决定6月12日起停产

负担不起税务局要求的消费税,宁波博汇化工决定6月12日起停产

开心体育站
2024-06-16 17:53:00
奥尼尔转发!21世纪最佳阵容:杜兰特二阵、哈登三阵,伦纳德落选

奥尼尔转发!21世纪最佳阵容:杜兰特二阵、哈登三阵,伦纳德落选

你的篮球频道
2024-06-16 13:41:22
武汉黑恶势力、放高利贷、经营抵押典当行现象分析

武汉黑恶势力、放高利贷、经营抵押典当行现象分析

阿莱美食汇
2024-06-16 16:39:14
朱婷腰部不适缺席比赛,中国女排3比2逆转土耳其豪取三连胜

朱婷腰部不适缺席比赛,中国女排3比2逆转土耳其豪取三连胜

澎湃新闻
2024-06-15 22:40:30
中超-海牛1-0送沧州9轮不胜 迭戈77秒闪击&造本赛季最快进球

中超-海牛1-0送沧州9轮不胜 迭戈77秒闪击&造本赛季最快进球

直播吧
2024-06-16 21:06:33
亲戚送旧家具可以收,唯独这“3样旧物”,不管谁送,都不能收!

亲戚送旧家具可以收,唯独这“3样旧物”,不管谁送,都不能收!

影视评论阿劲
2024-06-16 16:52:25
世联赛悲喜一夜:荷兰3-1抢9.37分,日本横扫韩国,9连胜球队诞生

世联赛悲喜一夜:荷兰3-1抢9.37分,日本横扫韩国,9连胜球队诞生

元爸体育
2024-06-16 20:45:37
中国军舰抵达仙宾礁后!美航母编队也跟了过来,甲板上摆满了弹药

中国军舰抵达仙宾礁后!美航母编队也跟了过来,甲板上摆满了弹药

笔墨V
2024-06-14 10:02:01
遍地流氓时尚?漏裆裤、蟑螂头、姨妈裙,这些病态审美真长了见识

遍地流氓时尚?漏裆裤、蟑螂头、姨妈裙,这些病态审美真长了见识

秋姐居
2024-06-15 14:29:49
解放战争中,如果国民党获得胜利,今天的中国会是什么样

解放战争中,如果国民党获得胜利,今天的中国会是什么样

史诗长歌
2024-05-13 13:34:32
全面提升!广东新星在美特训进步大 持球+三分球已突破 杜锋很满意

全面提升!广东新星在美特训进步大 持球+三分球已突破 杜锋很满意

林子说事
2024-06-16 17:19:40
泪目!黑龙江车祸5人遇难,高考生家长心如刀绞

泪目!黑龙江车祸5人遇难,高考生家长心如刀绞

起喜电影
2024-06-16 15:57:04
突发!东莞一“擎天柱”在大风中倒下,路过车辆被砸中!

突发!东莞一“擎天柱”在大风中倒下,路过车辆被砸中!

东莞本地生活
2024-06-16 15:31:30
回顾:河南女子相亲,男厨师一月2万,女子害羞:小鲜肉,很喜欢

回顾:河南女子相亲,男厨师一月2万,女子害羞:小鲜肉,很喜欢

佑宛故事汇
2024-06-16 21:32:57
2024-06-16 22:28:49
洪生鹏
洪生鹏
脚踏实地,实事求是,勇敢向前行
797文章数 1868关注度
往期回顾 全部

头条要闻

牵涉越南“女首富”案 又一位越共中央高层受处分

头条要闻

牵涉越南“女首富”案 又一位越共中央高层受处分

体育要闻

没人永远年轻 但青春如此无敌还是离谱了些

娱乐要闻

上影节红毯:倪妮好松弛,娜扎吸睛

财经要闻

打断妻子多根肋骨 上市公司创始人被公诉

科技要闻

iPhone 16会杀死大模型APP吗?

汽车要闻

售17.68万-21.68万元 极狐阿尔法S5正式上市

态度原创

房产
游戏
本地
家居
公开课

房产要闻

万华对面!海口今年首宗超百亩宅地,重磅挂出!

《夺宝奇兵》涉及多个关卡场景 新老角色都有

本地新闻

粽情一夏|海河龙舟赛,竟然成了外国人的大party!

家居要闻

空谷来音 朴素留白的侘寂之美

公开课

近视只是视力差?小心并发症

无障碍浏览 进入关怀版