mysql 两张表合并查询_中级数据分析-多表查询
- 表的加法
- 表的联结
- 联结应用案例
- case应用案例
一、表的加法
加法:union
表的加法是把两个表的数据,按行合并在一起。
表的加法,会把两个表里重复的数据删除,只保留一个。
如果想保留重复数据,可以使用 union all
这样就保留了全部的重复数据
二、表的联结
- 交叉联结
- 内联结
- 左联结
- 右联结
- 全联结
(1)交叉联结-cross join
交叉联结也叫作 笛卡尔积
(2) 内联结 - inner join
内联结 是同时查找出存在于两张表中的数据
内联结步骤:根据条件,从两张表中找出符合条件的行,再通过交叉联结合并
写法:
结果:
(3) 左联结 - left join
左联结是把左边表中的数据,全部取出来
左联结步骤:将左侧的表作为主表,主表中的数据全部读取出来。再根据条件,取出右边表中符合条件的行,通过交叉联结合并。
写法:
结果:
下面我们来看个问题,下图中,红色的部份如何用SQL表示出来,
写法:
结果:
(4) 右联结 - right join
右联结是把右边表中的数据,全部取出来
右联结步骤:将右侧的表作为主表,主表中的数据全部读取出来。再根据条件,取出左边表中符合条件的行,通过交叉联结合并。
写法:
结果:
下面我们来看个问题,下图中,红色的部份如何用SQL表示出来,
写法:
结果:
本次结果,因为右边score表中,所有数据在左表中都存在,所以结果为空。
(5) 全联结 - full join
全联结步骤:返回左边和右表所有的行。当条件匹配时,两个行进行合并,如果不匹配,另一个表中对应的值用空值来填充。
需要注意下,mysql是不支持全联结的,这里理解下概念即可。
三、总结-一张表记住所有联结
四、联结应用案例
- 问题1:查询所有学生的学号、姓名、选课数、总成绩
写法:
结果:
- 问题2:查询平均成绩大于85分的所有学生的学号、姓名和平均成绩
写法:
结果:
- 问题3:查询学生的选课情况: 学号, 姓名, 课程号, 课程名称
这里涉及到3张表的联结了
写法:
结果:
五、case表达式
案例:
下面我们要来看一下,查询每门课程的及格和不及格人数。我们按照课程号分组,但是每门课程对应的不是一个值,而是两个值:及格和不及格。相当于两种情况,这样的问题就可以用case表达式来实现。
写法:
使用case表达式注意事项:
(1)else子句可以省略,会默认为空值但为了更好的书写习惯,最好还是保留
(2)end不能省略不写
(3) case表达式可以写在sql语句的任意子句里
case表达式的作用:当有多种情况需要条件判断时,就可以使用case表达式
下面我们再来看一个案例
- 使用分段[100-85],[85-70],[70-60],[<60]来统计各科成绩,分别统计:各分数段人数,课程号和课程名称。
分析:这里要用到两个表,课程表和成绩表
写法:
这里为什么要使用两个列来分组呢。因为使用group by时,select子句里面的列名,只能是group by 里面的列名,或者使用聚合函数的。
mysql 两张表合并查询_中级数据分析-多表查询相关推荐
- MySQL 两张表关联更新(用一个表的数据更新另一个表的数据)两个表使用条件从另外一个表获取数据更新本表
MySQL 两张表关联更新(用一个表的数据更新另一个表的数据)两个表使用条件从另外一个表获取数据更新本表 有两张表,info1, info2 . info1: info2: 方式一:要用info2中的 ...
- mysql两张表关联修改
mysql两张表关联修改 两张表的字段code是相同的,然后code作为关联参数来关联两表,将user2 中的name写入到user1 的name中,三表,四表,多表都是一个道理 UPDATE use ...
- 【181023】VC++将两张位图合并在一起显示
VC++将两张位图合并在一起显示,这是在编写一款PRG游戏时用到的技术,因为不少的PRG游戏的场景和人物都是分开的,所以运用合并的技术就尤其重要了,希望通过这个小例子,让你学会这一过程的实现方法. 源 ...
- 将两张DVD合并为一张DVD±R DL的方法
DVD Cloner 2019优化了DVD复制功能,提高了视频质量. 通过软件中的快捷方式窗口实时向我们发送快速反馈.下本篇文章中,为您介绍的是将两张DVD合并为一张DVD±R DL的方法. DVD ...
- 数据透视表 字段交叉_删除数据透视表的计算字段的宏
数据透视表 字段交叉 Have you ever recorded a macro to remove pivot table calculated fields? Just turn on the ...
- mysql 两张表合并查询_mysql中的分区表和合并表详解(一个常见知识点)
分区表是mysql5.1之后的新特性,合并表已经存在很长时间了.这篇文章主要介绍这两个概念以及他们基本的操作. 一.合并表 合并表说实话是一种将要被淘汰的技术,但是掌握了合并表的概念再去看分区表就比较 ...
- MySQL 两张表数据合并
有一个需求, 需要从数据库中导出两张表的数据到同一个excel中 鉴于是临时的业务需求, 直接使用Navicat 进行查询并导出数据. 数据涉及到三张表 CREATE TABLE `bigdata_q ...
- mysql 两张表当成一张表查询
mysql有两张表结构完全一样的,只不过一个是人工一个是机器的,想把两张变当成一张表作为数据源查询,边搜索边尝试,最后查到union all能满足我的需求, (select entry_id from ...
- access查询两列信息合并输出_如何在Access中合并两个数据表中的数据
当我们使用Access处理数据时,我们经常需要合并具有相同表结构的两个数据记录.那么如何实现这一功能呢?以下编辑愿与您分享. 工具/材料 Access 操作方法 打开Access软件,新建两个数据表. ...
最新文章
- javascript创建对象
- 总结调试过程中怎么去抓log
- JVM-02内存区域与内存溢出异常(中)【hotspot虚拟机对象】
- 【干货】七步,让你的网页表单更亲切
- Linux配置基础命令
- R语言心得-分词包的安装
- 重新绘制TabControl的Tabpage标签,添加图片及关闭按钮
- 华为Mate 40工程机曝光:并未采用屏下摄像头
- Python 爬虫 ——html 页面的认识
- Linux服务器密码过期了怎么办?Linux服务器如何设置密码永不过期?
- 埃森哲是如何系统化做好数据分析的
- 【matlab算法原理详解】车牌识别算法
- 阿里云服务器使用记录
- linux sticky,session_sticky命令
- 取消wps右键菜单_wps自动生成论文目录出现错误怎么办
- type、dtype和astype
- 阿里插件机制android,Android插件 - 阿里規約 Alibaba Java Coding Guidelines
- a标签里面title的使用
- 准到吓人的手相。。。
- 用js动态生成html页面