full outer join 与full join的区别_基础小白的SQL的JOIN语法解析
总的来说,四种JOIN的使用/区别可以描述为:
left join 会从左表(shop)那里返回所有的记录,即使在右表(sale_detail)中没有匹配的行。
right outer join 右连接,返回右表中的所有记录,即使在左表中没有记录与它匹配
full outer join 全连接,返回左右表中的所有记录
在表中存在至少一个匹配时,inner join 返回行。 关键字inner可省略。
Join
一共有三种OUTER JOIN:
LEFT OUTER JOIN
RIGHT OUTER JOIN
FULL OUTER JOIN
关键字OUTER是可选择的,取决于具体语言,在实现上它们都是遵循标准的,因此FULL JOIN和FULL OUTER JOIN是一样的。
- 接着将以简化的数据集来说明这些JOIN语句。考虑有如下两个数据集,注意到有些元素在car表中有,在person表中没有,反过来也是。
- LEFT OUTER JOIN
- 现在执行如下SQL语句(左连接,LEFT OUTER JOIN):
- SELECT * FROM person LEFT OUTER JOIN car ON car_id = id;
- 将会得到如下结果:
- 左连接(LEFT OUTER JOIN)会输出左边的表中的所有结果,如果右边的表中有相应项,则会输出,否则为NULL
- 因此,如果要找出在person(左边的表)中有,而在car(右边的表)中没有的数据项,可以使用如下的SQL语句:
- SELECT * FROM person LEFT OUTER JOIN car ON car_id = id WHERE id IS NULL;
- 将会得到如下结果:
- RIGHT OUTER JOIN
- 如果使用右连接,结果将会输出car表中所有的数据项和person表中相应的匹配项(注意你现在是获取了右边的表中的所有数据项):
- SELECT * FROM person RIGHT OUTER JOIN car ON car_id = id;
- 将会得到如下结果:
- FULL OUTER JOIN(意义有变化,非全部显示)
- 如果想要取得所有的元素项,则可以使用FULL JOIN:
- SELECT * FROM person full JOIN car ON car_id = id;
- 将会得到如下结果:
- CROSS JOIN
- 最后还有一个CROSS JOIN,笛卡儿积,将会返回person表中每个元素分别匹配car中所有元素的结果,即N*M组合。
- SELECT * FROM person CROSS JOIN car;
- 将会得到如下结果:
- 最后附上一张图解:
- 这边也有一张图清楚的说明了每个JOIN操作。建议把上面的内容浏览一边后,再好好看下这张图片,相信对JOIN的操作应该就完全明白了。
full outer join 与full join的区别_基础小白的SQL的JOIN语法解析相关推荐
- python和excel数据分析有什么区别_用Excel、SQL、Python做数据分析有何不同?
作者简介 HeoiJin:立志透过数据看清世界的产品策划,专注爬虫.数据分析.产品策划领域. 万物皆营销 | 资本永不眠 | 数据恒真理 CSDN:https://me.csdn.net/weixin ...
- left join左表百万数据查询慢_Spark SQL 之 Join 实现
正好最近跑一些spark sql ,重新温习了遍有关联合查询的一些底层实现,参考这位博主的分享Spark SQL 之 Join 实现 Join作为SQL中一个重要语法特性,几乎所有稍微复杂一点的数据分 ...
- 图解SQL inner join、left join、right join、full outer join、union、union all的区别
对于SQL的Join,在学习起来可能是比较乱的.我们知道,SQL的Join语法有很多inner的,有outer的,有left的,有时候,对 于Select出来的结果集是什么样子有点不是很清楚.Codi ...
- join和countDownLatch原理及区别详解
先上结论 原理 join 原理:在当前线程中调用另一个线程线程 thread 的 join() 方法时,会调用该 thread 的 wait() 方法,直到这个 thread 执行完毕(JVM在 ru ...
- 详细解释C# 中Path.Join与Path.Combine的区别
C# 中Path.Join与Path.Combine的区别 public static void Main(){var path1 = "C:/Program Files/";va ...
- oracle sql 多表 嵌套子查询 连接查询, join where exist in 的区别
sql中exits和in的区别 转:http://hi.baidu.com/delphi_relive/blog/item/d7c0034a49c4932208f7ef21.html in 和 exi ...
- sqr和Oracle的区别,Oracle学习笔记:a inner join b与from a,b where a.x=b.x的差异
近期,在使用Oracle的过程中,由以下两段代码的执行引发的思考,到底 select * from a,b where a.id = b.id 和 select * from a inner join ...
- oracle等值连接与innerjoin,inner join(等值联接)、left join(左联接)、right join(右联接)用法及区别...
inner join(等值连接) 只返回两个表中联结字段相等的行 left join(左联接) 返回包括左表中的所有记录和右表中联结字段相等的记录 right join(右联接) 返回包括右表中的所有 ...
- Left,Right,Outer和Inner Joins有什么区别?
我想知道如何区分所有这些不同的连接... #1楼 内连接 :仅显示行,何时从两个表中获取数据. 外连接 (左/右):显示从与配对行(S)的左/右表中的所有结果,如果它存在与否. #2楼 只有4种: 内 ...
最新文章
- php mysql 随机字符串函数是,mysql生成随机字符串函数分享
- 找到所有小于N的素数
- 三菱e68系统程序传输_盘点那些年用过的数控操作系统,全会操作的话你肯定是老师傅...
- producer send源码_RocketMq系列之Producer顺序消息发送源码分析(四)
- python中case的用法_用 Python 实现简单的 switch/case 语句
- mysql的告警日志_运维日记|MySQL关于aborted告警日志的分析
- tomcat源码分析(一)从tomcat架构说起
- u盘安装centos 7.2
- 基于mycat的mysql_MySQL基于Mycat实现读写分离
- Google C++ Testing Framework之断言
- 2022张宇考研基础30讲 第十一讲 多元函数微分学
- 移动端车牌识别sdk——技术干货
- 如何理解静态库与动态库
- 微信通讯录java实现的,小程序组件之仿微信通讯录的实现代码
- 鸿蒙生死印是谁的,逆天邪神:鸿蒙印的器灵还存在,或许云澈将知道些关于远古的秘密...
- Quorum NWR算法
- java aes iv_java AES加密解密
- 短视频 SDK 架构设计实践
- 弘辽科技:拼多多推广计划怎么设置划算?如何做好推广?
- 终于把“翻转课堂”、“微课”和“慕课”说明白了
热门文章
- 微软CRM记录列表每页显示超过250个记录解决办法
- ROW_NUMBER
- Objective-C的hook方案(一): Method Swizzling
- sharepoint搜索pdf文档
- Jscript 控制程序的流程
- Stanford机器学习---第十一讲.异常检测
- 【干货】2020十大消费新机遇.pdf(附下载链接)
- 【报告分享】2020年上半年中国直播电商行业发展分析报告.pdf(附下载链接)...
- Delaunay三角化实现原理
- php 面向接口,php开发app接口