• 表的加法
  • 表的联结
  • 联结应用案例
  • 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 两张表合并查询_中级数据分析-多表查询相关推荐

  1. MySQL 两张表关联更新(用一个表的数据更新另一个表的数据)两个表使用条件从另外一个表获取数据更新本表

    MySQL 两张表关联更新(用一个表的数据更新另一个表的数据)两个表使用条件从另外一个表获取数据更新本表 有两张表,info1, info2 . info1: info2: 方式一:要用info2中的 ...

  2. mysql两张表关联修改

    mysql两张表关联修改 两张表的字段code是相同的,然后code作为关联参数来关联两表,将user2 中的name写入到user1 的name中,三表,四表,多表都是一个道理 UPDATE use ...

  3. 【181023】VC++将两张位图合并在一起显示

    VC++将两张位图合并在一起显示,这是在编写一款PRG游戏时用到的技术,因为不少的PRG游戏的场景和人物都是分开的,所以运用合并的技术就尤其重要了,希望通过这个小例子,让你学会这一过程的实现方法. 源 ...

  4. 将两张DVD合并为一张DVD±R DL的方法

    DVD Cloner 2019优化了DVD复制功能,提高了视频质量. 通过软件中的快捷方式窗口实时向我们发送快速反馈.下本篇文章中,为您介绍的是将两张DVD合并为一张DVD±R DL的方法. DVD ...

  5. 数据透视表 字段交叉_删除数据透视表的计算字段的宏

    数据透视表 字段交叉 Have you ever recorded a macro to remove pivot table calculated fields? Just turn on the ...

  6. mysql 两张表合并查询_mysql中的分区表和合并表详解(一个常见知识点)

    分区表是mysql5.1之后的新特性,合并表已经存在很长时间了.这篇文章主要介绍这两个概念以及他们基本的操作. 一.合并表 合并表说实话是一种将要被淘汰的技术,但是掌握了合并表的概念再去看分区表就比较 ...

  7. MySQL 两张表数据合并

    有一个需求, 需要从数据库中导出两张表的数据到同一个excel中 鉴于是临时的业务需求, 直接使用Navicat 进行查询并导出数据. 数据涉及到三张表 CREATE TABLE `bigdata_q ...

  8. mysql 两张表当成一张表查询

    mysql有两张表结构完全一样的,只不过一个是人工一个是机器的,想把两张变当成一张表作为数据源查询,边搜索边尝试,最后查到union all能满足我的需求, (select entry_id from ...

  9. access查询两列信息合并输出_如何在Access中合并两个数据表中的数据

    当我们使用Access处理数据时,我们经常需要合并具有相同表结构的两个数据记录.那么如何实现这一功能呢?以下编辑愿与您分享. 工具/材料 Access 操作方法 打开Access软件,新建两个数据表. ...

最新文章

  1. javascript创建对象
  2. 总结调试过程中怎么去抓log
  3. JVM-02内存区域与内存溢出异常(中)【hotspot虚拟机对象】
  4. 【干货】七步,让你的网页表单更亲切
  5. Linux配置基础命令
  6. R语言心得-分词包的安装
  7. 重新绘制TabControl的Tabpage标签,添加图片及关闭按钮
  8. 华为Mate 40工程机曝光:并未采用屏下摄像头
  9. Python 爬虫 ——html 页面的认识
  10. Linux服务器密码过期了怎么办?Linux服务器如何设置密码永不过期?
  11. 埃森哲是如何系统化做好数据分析的
  12. 【matlab算法原理详解】车牌识别算法
  13. 阿里云服务器使用记录
  14. linux sticky,session_sticky命令
  15. 取消wps右键菜单_wps自动生成论文目录出现错误怎么办
  16. type、dtype和astype
  17. 阿里插件机制android,Android插件 - 阿里規約 Alibaba Java Coding Guidelines
  18. a标签里面title的使用
  19. 准到吓人的手相。。。
  20. 用js动态生成html页面

热门文章

  1. Scala入门到精通——第六节:类和对象(一)
  2. 深入理解Spark 2.1 Core (九):迭代计算和Shuffle的原理与源码分析
  3. jvm系列(十一):Java 8-从持久代到metaspace
  4. 将Python脚本打包成可执行文件
  5. JavaScript语言特性
  6. 服务交付审查:缺失的DevOps反馈环
  7. 快速开发基于 HTML5 网络拓扑图应用之 DataBinding 数据绑定篇
  8. 【Android】3.3 MapFragment的使用
  9. 好用的工具---screen命令
  10. 如何使自己的网站与UC进行用户整合