一、表的加法(Union)

1、用法:将两个表合并成一个表

b299cdadfdec3fda624ba211df22fcd1.png
2、语句:

select
需保留重复行

select 查询结果
from 从哪张表查询
union all
select 查询结果
from 从哪张表查询
练习:

将课程表及课程表1合并在一起

课程表1:

1dd4140cf5c4a6a767a6a9fef7c25111.png
课程表2:

27ba4b0014ac38ede67f84e5be8014f4.png
合并结果:

1)不保留重复行

a510f090a71f8d9284c747122f3e84c1.png
2)保留重复行

c0d0c459be43e76d4d663bb8cdcd0760.png
二、表的联结

联结:表和表之间是通过列产生关系,联结就是通过表和表之间关系将两个表合并在一起的操作。

表的联结分为:交叉联结(cross join)、内联结(inner join)、左联结(left join)、右联结(right join)、全联结(full join);内联结、左联结、右联结这3种是较常用的联结方法。

1、交叉联结(cross join)

将表的每一行与另一个表的每一行联结在一起,行数是两个表行数的乘积;不常用,结果行数太多。

2、内联结(inner join)

查找出同时存在于两张表的数据。

语句:

select…
from 表1 as a
inner join 表2 as b
on a.列名=b.列名;
1926f458259132d5aa4faae431289a25.png
3、左联结(left join)

将左侧的表作为主表,主表中的数据全部读取出来,右边的表只选取与主表有相同列的表。

语句:

select…
from 表1 as a
left join 表2 as b
on a.列名=b.列名;
f5181586ab0e6857e0398896d5872218.png
在左联结基础上去掉两表共同的部分

select…
from 表1 as a
left join 表2 as b
on a.列名=b.列名
where b.列名 is null;
2cbf7cf9ade390e9988e84cdf99dfe51.png
4、右联结(right join)

将右表作为主表,主表中的数据全部读取出来,左边的表只选取与主表有相同列的表。

语句:

select…
from 表1 as a
right join 表2 as b
on a.列名=b.列名;
11bb3cda78a719b129d65314745fa189.png
在右联结基础上去掉两表共同的部分

select…
from 表1 as a
right join 表2 as b
on a.列名=b.列名
where b.列名 is null;
f50082e9f33849ef6edab79cf5730b89.png
5、全联结(full join)

返回左表和右表中所有的行,当某行与另一表中有匹配的行,两行会进行合并,当某行与另一表中无匹配行,另一表对应的行会填充成空值;mysql不支持全联结。

810be5f4cce9ef33318bb1df07e173c1.png
练习:

1、用内联结将学生和成绩表合并在一起

9b9de7039ec3291e19a3c20c7be007f2.png
2、用左联结将学生和成绩表合并在一起

55893ee25eb6264d0632a32350129aa3.png
在左联结基础上去掉两表共同的部分

21893bbd562ba4d0d96979f08e911cc9.png
3、用右联结将学生和成绩表合并在一起

2cbcdba2f3d757f567c5bae8b9abc923.png
在右联结基础上去掉两表共同的部分

f06890ff0a6117a651fc12fe80f85ad0.png
score表中的所有学号student表中都涵盖了,因此去掉共同部分会显示空值
三、联结应用案例

1、查询所有学生的学号、姓名、选课数、总成绩

e24ac2b1c2d710f3b446531dacb0dd27.png
2、查询平均成绩大于85的所有学生的学号、姓名和平均成绩

d09fec986c9109cadcfb6f0341e6762d.png
3、查询学生的选课情况:学号、姓名、课程号、课程名称

53462b02ea766ae12c3e2d3a3eae4bee.png
四、case表达式

使用case表达式可以帮助处理复杂的查询问题,相当于一个条件判断的函数,判断每一行是不是满足某一条件。

1e093fa942eaf151f868e1f11b85d11d.png
1、注意事项:

1)else可以省略不写,默认为else为空值,最好不省略;

2)end不可以省略。

2、如何使用

当有多种情况需要条件判断时使用,可以用于sql语句的任意语句中。

练习:

1、查询出每门课程的及格人数和不及格人数

f2c15529dda4bc076e64c79d410547dd.png
2、使用分段[100-85]、[85-70]、[70-60]、[<60]来统计各科成绩,分别统计各分数段人数:课程ID和课程名称

9beb8413eaa9165269bc181fb66f6a0c.png

mysql把两个查询的结果合并为一个结果相关推荐

  1. mysql怎样两表查询_mysql怎样两表查询?

    mysql两表查询的方法:1.使用"select 字段列表 from 表1,表2 [where 条件]"进行查询:2.使用"SELECT 字段列表 FROM 表1 关键字 ...

  2. 将两个有序顺序表合并为一个新的有序顺序表MergeList_Sq

    将两个有序顺序表合并为一个新的有序顺序表,输出合并后的顺序表的所有数据元素: #include<stdio.h> #include<stdlib.h> #define LIST ...

  3. 如何把两段即以上视频合并成一个

    随着科技的快速发展,我们使用视频和图片的机会越来越多,快节奏的生活方式,使得很多人对文字失去了耐心,不管是学习或者是简单的娱乐,都会用到视频,像小编一样有自己的爱豆的会经常把很多视频合并成一个,这样很 ...

  4. 将两个有序顺序表合并为一个新的有序顺序表

    将两个有序顺序表合并为一个新的有序顺序表 题目要求 基本思想 核心代码 完整代码(C++) 题目要求 将两个有序顺序表合并为一个新的有序顺序表,并由函数返回合并后的顺序表. 基本思想 非常经典的题目, ...

  5. 两个List数据集合合并成一个List

    查询两个差不多相同的表,一个是入库表,一个是退货表,字段大致相同,但是有所差异,入库表的数量和所有金额都是正数,退货表的数量和金额都是负数,所以不能join链表查询,需要分开查询出两个ToList:但 ...

  6. MFC中如何将两个独立的程序合并为一个程序(障眼法)

    今天一个同学叫我帮忙解决一个关于MFC的问题,问题为:"将两个独立的MFC程序合并为一个程序 ". 当然了,我用的是障眼法. (1)下面先来看看具体情况:程序A和程序B分别是两个独 ...

  7. mysql 查询结果横向拼接_两个SQL查询,横向合并为一个查询结果

    第一条sql: select unit,count(*)as number from archives_management group by unit 第二条sql: select fine_uni ...

  8. MySQL统计两部分查询结果记录数量比值

    在SQL查询中,我们可能会有这样的需求,如下面的表 姓名 班级 性别 爱好 姚远 1 男 装X,赚钱,靠女人 路晓欧 1 女 装X,赚钱,帮男人 刘云天 2 男 赚钱,傲娇 霍梅 2 女 赚钱,坑闺蜜 ...

  9. c语言整形数组相加,[c语言]将两个整形升序数组合并为一个升序数组

    可能大多数人首先想到的是将两个数组合并,然后将合并后的数组排序输出.但是题目要求合并完即为一个升序数组,这样做不合题意.可以利用已知条件(两数组A.B均为升序),循环在每个数组中均选取一个元素来对比, ...

最新文章

  1. 构建高性能ASP.NET应用的12点建议
  2. C#中readonly, const 和 in型参数使用
  3. ip转换软件在五八上能用吗?_交换机能当路由器用吗?浅谈交换器和路由器的区别...
  4. linux用户登录实验,实验三 Linux系统登录及用户管理
  5. 漫画:什么是分布式锁
  6. java druid sqlite_springboot整合druid抛出dbType not support : sqlite异常
  7. PHP并行查询MySQL
  8. APP适配安卓手机刘海屏
  9. Atitit 文档的格式演变attilax总结
  10. 报文解析工具_智能站系列之7手把手教你61850模型及报文分析(中)
  11. 使用JRTPLIB收发RTP数据包
  12. html中代表颜色的字母16个,html中16进制的代码对应颜色表
  13. you_get下载视频报错 don‘t panic, c‘est la vie. please try the following steps
  14. 海马苹果助手ipad版_不惧掉签 | 苹果IPA安装包,免费自签教程
  15. 教你怎么在 Mac 电脑上进行语音实时输入
  16. html如何自己做一个背景特效,背景效果实现方法总结
  17. Ubuntu安装软件时报错(报错:dpkg: 处理软件包 xxx (--configure)时出错: 依赖关系问题 - 仍未被配置)
  18. 进击3D游戏界!Cocos Creator快速实现骨骼动画交互!
  19. 午夜00:37分,与蚊子相伴无眠之夜
  20. 海思USB2.0、USB3.0 Device UVC规格热插拔会不识别

热门文章

  1. python中特殊变量-python list每三个分成一组python中星号变量的几种特殊用法
  2. GBDT迭代决策树的入门教程
  3. Go:创建新进程(os.StartProcess源码解读)
  4. Git-删除文件后找回-比较文件差异
  5. LeetCode刷题(24)
  6. vue让元素固定_vue 监听dom元素的滚动事件 实现某元素吸顶或者固定位置显示
  7. 双精度浮点数转换_模型压缩一半,精度几乎无损,TensorFlow推出半精度浮点量化工具包,还有在线Demo...
  8. JWT介绍以及java-jwt的使用
  9. Linux的文件压缩与解压缩
  10. numpy 图片填充_用numpy做图像处理(上)