OUTER JOIN的应用场景
问题描述
在做数据库程序的时候经常会对某条数据的附加属性进行联合查询,这些附加属性不是所有的数据都有。举例来说,我们希望查询客户信息的同时,也能查看客户消费次数。但是,由于不是所有的客户都有消息记录,如果我们直接使用INNER JOIN的话,没有消费记录的客户人信息就不会显示。
实例展示
就客户信息与消费记录的示例具体请看以下数据表。
表1:Custom 表
------------------------
CID | Name | Sex
----+---------+--------1 | Tom | Male2 | Jack | Male3 | Lucy | Female
------------------------
表2:Order 表
-------------------
OID | CID | Count
----+-----+--------1 | 1 | 452 | 3 | 36
-------------------
查询语句
SELECT Custom.Name, Custom.Sex, Order.Count
FROMCustom INNER JOIN Order ON Custom.CID = Order.CID-- 注:SQL语句不分大小写了 ,但一般习惯将关键字大写
查询结果
-------------------------Name | Sex |. Count
-------+--------+--------Tom | Male | 45Lucy | Female | 36
-------------------------
在以上的示例中可以看到,使用了INNER JOIN以后,虽然实现多表联合查询,但是由于Jack没有消费记录,所以在最终结果中没有显示出来。
OUTER JOIN 的使用
为了解决这个问题,我们可以使用OUTER JOIN进行联合查询,只需将 INNER
改为 LEFT OUTER
即可,最终查询语句如下:
SELECT Custom.Name, Custom.Sex, Order.Count
FROMCustom LEFT OUTER JOIN Order ON Custom.CID = Order.CID
结果显示如下:
-------------------------Name | Sex | Count
-------+--------+--------Tom | Male | 45Jack | Maie | NULLLucy | Female | 36
-------------------------
在返回的结果中,没有数据的记录为NULL。这时只需要在显示时做相应的处理,比如把NULL改成0、"",或者“无”等其他合适的内容即可。
补充说明
在使用OUTER JOIN 的时候,如果使用 LEFT 关键字,则左表是主表,显示其全部内容,如上例所示;如果使用 RIGHT,则右表是主表显示其全部内容。这两个关键字除了左右表谁为主表不一样,其他没有任何不同,在使用的时候可以根据实际情况自由选择。
OUTER JOIN的应用场景相关推荐
- full outer join应用场景
1.背景:和分析师对数的过程,了解到她会使用full outer join 来检测结果表与主表的对齐数量,发现很好用. 2.应用场景:如果主表的所有粒度值都要(如主表粒度是设备,即指所有设备都要在结果 ...
- MaxCompute full outer join改写left anti join实践
简介: ods层数据同步时经常会遇到增全量合并的模型,即T-1天增量表 + T-2全量表 = T-1全量表.可以通过full outer join脚本来完成合并,但是数据量很大时非常消耗资源.本文将为 ...
- “INNER JOIN”和“OUTER JOIN”有什么区别?
问题描述: 另外,LEFT JOIN.RIGHT JOIN 和 FULL JOIN 如何适应? 保持自己快人一步,享受全网独家提供的一站式外包任务.远程工作.创意产品订阅服务–huntsbot.com ...
- mysql全关联_MySQL实现全关联 full outer join
SQL LEFT JOIN 关键字 LEFT JOIN 关键字会从左表 (table_name1) 那里返回所有的行,即使在右表 (table_name2) 中没有匹配的行. LEFT JOIN 关键 ...
- [摘]终于找到一个有助理解left/right/full outer join的例子
近日在学习<Understading DB2>的时候找到了一个例子,对于理解 left/right/full 三种 outer join 的大有裨益. 先看样本数据,来自DB2的示例数据库 ...
- left join 和 left outer join 的区别
老是混淆,做个笔记,转自:https://www.cnblogs.com/xieqian111/p/5735977.html left join 和 left outer join 的区别 通俗的讲: ...
- R语言merge函数全连接dataframe数据(Full (outer) join)、merge函数进行全连接必须将参数all设置为true(all=TRUE)、默认merge函数通过公共列名合并数
R语言merge函数全连接dataframe数据(Full (outer) join).merge函数进行全连接必须将参数all设置为true(all=TRUE).默认merge函数通过公共列名合并数 ...
- R语言merge函数左连接dataframe数据(Left (outer) join in R)、左连接必须将参数all设置(all.x = TRUE)、默认merge函数通过公共列名合并数据集
R语言merge函数左连接dataframe数据(Left (outer) join in R).merge函数进行左连接必须将参数all设置为(all.x = TRUE).默认merge函数通过公共 ...
- oracle full outer join,oracle 内连接(inner join)、外连接(outer join)、全连接(full join)...
建表语句: create table EMPLOYEE ( EID NUMBER, DEPTID NUMBER, ENAME VARCHAR2(200) ) create table DEPT ( D ...
最新文章
- 哪些模块可用于python性能分析_提升Python程序性能的方法有哪些?看完你就知道啦!...
- 键桥通讯布局大数据 9.45亿入股上海即富
- bzoj 3747: [POI2015]Kinoman
- Python操作Redis中的hash
- IOS之学习笔记十五(协议和委托的使用)
- 56 SD配置-科目分配-定义物料科目设置组
- android getevent 代码,Getevent | Android 开源项目 | Android Open Source Project
- Gbase相关学习总结
- 一个成功的网络营销案例的分析
- s7200cpu224xp手册_西门子S7-200模块CPU224XPCN可编程控制器
- 本特利电源模块3500/15-05-05-00
- [配置] minGW32 安装与环境配置
- 电商物流就是昨天的外卖乱战?千亿市场到底该如何整合
- 什么是胖客户端和瘦客户端?什么是哑终端?
- Macbook无法开机备份数据 制作安装系统U盘 安装系统 (图文)
- 使用 OpenCV 构建文档扫描仪
- 网页脚本编程学习笔记
- 【Proteus仿真】基于74LS148+74LS279+74LS48的四路抢答器
- 20145204张亚军第14周博客总结
- 写电子邮件是一件严肃的事情
热门文章
- 三星班加罗尔(SRIB)校园面试体验
- cobar是什么? 能做什么?
- Android Studio Electric Eel 正式版下载地址
- 支付宝APP支付 (JAVA生成支付信息,uniapp拉起支付宝支付)
- python xlutils模块安装_python接口测试,第三方包xlrd和xlutils,怎么安装
- 计算机无法识别华为m3,华为平板M3青春版10.1英寸平板电脑没法充电的原因是什么_华为平板电脑没法充电故障分析...
- Adobe2023全家桶win及Mac系统安装包下载及安装教程ps、pr、ai、ae安装包下载
- 华为无线网卡插上服务器没反应,无限网卡插在台式机上没反应啊怎么解决
- 基于gensim的Deep learning with paragraph2vec 官方models.doc2vec文档解释
- 为什么谷歌浏览器修改主题背景,只有标签栏变了,但新标签页背景不变?怎么办?