本部分讲述:join系列全部总结和case when语句用法

join系列:表加法、Cross join 、inner join、left join、right join、full outer join

练习数据

插入数据的代码,可以在这里直接复制:

绚丽的小海螺:从零学会SQL-入门(Navicat)​zhuanlan.zhihu.com

一、表加法

两张表进行合并

select 

union 和union all 的区别:union会去重并降低效率,union all直接追加。union前后是两端select语句而非结果集

二、Cross join

笛卡尔积如图,把所有笛卡尔连接的结果都展示出来,在实际应用中使用较少

三、inner join

根据指定列取两个表都存在的做交叉联结

select a.学号,a.姓名,b.课程号
from student as a
INNER JOIN
score as b
on a.学号 = b.学号

四、left join

以左表为主,右表没有的信息被甜为空

select a.学号,a.姓名,b.课程号
from student as a
LEFT JOIN
score as b
on a.学号 = b.学号

左连接的拓展问题

求差集,如果只想左连接找出如图所示的结果,非常简单,只需要对右表的关键字加个判断是否为null

select a.学号,a.姓名,b.课程号
from student as a
left JOIN
score as b
on a.学号 = b.学号
where b.学号 is Null;

五、right join

与left join相反

select a.学号,a.姓名,b.课程号
from student as a
right JOIN
score as b
on a.学号 = b.学号

六 out join

外连接,即求两个集合的并集。从笛卡尔积的角度讲就是从笛卡尔积中挑出ON子句条件成立的记录,然后加上左表中剩余的记录,最后加上右表中剩余的记录。另外MySQL不支持OUTER JOIN,但是我们可以对左连接和右连接的结果做UNION操作来实现。

连接后的筛选结果依然正常使用group by having等函数

七 Case when

case when 如何用?case when 在面试中十分常见,也十分使用

图中的序号代表执行顺序,意味着when的条件是互斥的。找到满足的条件则退出case 语句,但通常我们使用case语句是做汇总分析比如如下:

使用0,1小技巧,先给表增加两列,再分组统计

SELECT 课程号,
case when 成绩>=60 then 1
else 0
end as 及格人数,
case when 成绩<60 then 1
else 0
end as 不及格人数
from score

生成如下结果,再进行分组统计

整合结果如下

SELECT 课程号,
sum(case when 成绩>=60 then 1
else 0
end) as 及格人数,
sum(case when 成绩<60 then 1
else 0
end) as 不及格人数
from score
GROUP BY 课程号

case when更为常见使用场景是分段统计

left join on用法_MySQL 多表查询 quot;Joinquot;+“case when”语句总结相关推荐

  1. mysql同步三张表如何用事务_MySQL 多表查询与事务的操作

    表连接查询 什么是多表查询 # 数据准备 # 多表查询的作用 * 比如:我们想查询孙悟空的名字和他所在的部门的名字,则需要使用多表查询 # 如果一条 SQL 语句查询多张表,因为查询结果在多张不同的表 ...

  2. mysql left join 查询_MySQL联表查询基本操作之left-join常见的坑

    概述 对于中小体量的项目而言,联表查询是再常见不过的操作了,尤其是在做报表的时候.然而校对数据的时候,您发现坑了吗?本篇文章就 mysql 常用联表查询复现常见的坑. 基础环境 建表语句 DROP T ...

  3. MyBatis从入门到精通(三):MyBatis XML方式的基本用法之多表查询

    最近在读刘增辉老师所著的<MyBatis从入门到精通>一书,很有收获,于是将自己学习的过程以博客形式输出,如有错误,欢迎指正,如帮助到你,不胜荣幸! 1. 多表查询 上篇博客中,我们示例的 ...

  4. mysql 表 视图 索引吗_Mysql多表查询, 视图,事务,索引,函数,go连接数据库

    1.1 今日目标 理解多表查询 理解子查询 能够创建视图 能够删除视图 能够查看创建视图的SQL语句 能够理解事务的作用 能够操作事务 理解索引的作用 能够创建索引 能够删除索引 知道常用的函数 了解 ...

  5. mysql 查询导入的数据_MySql多表查询及数据导入

    MySQL高级 外键(foreign key) 定义 让当前表字段的值在另一个表的范围内选择 语法 foreign key(参考字段名) references 主表(被参考字段名) on delete ...

  6. 第一阶段:前端开发_Mysql——多表查询

    2018-06-26 多表查询 一.交叉连接查询(基本不会使用-得到的是两个表的乘积) 语法:select * from table1,table2; 二.内连接查询(使用的关键字:inner joi ...

  7. mysql 多表既有内连接又有外连接_MySQL 多表查询中的内连接和外连接

    一般情况下一个网站的数据库通常会有多张数据表组成,这些数据表分别存储网站不同区域的内容.数据表之间可以用类似 ID 的字段来关联,在查询的时候可以通过一条语句来查询多张表的内容.例如 论坛的数据库,帖 ...

  8. mysql多表查询书籍_MySQL多表查询及子查询

    1. MySQL数据库执行查询操作时的查询流程: 请求-->查询缓存 请求-->查询缓存-->解析器-->预处理器-->优化器-->查询执行引擎-->存储引擎 ...

  9. mysql子查询存到另一张表_MySQL多表查询与子查询

    多表查询 多表查询实际上根据查询要求先将两个表连接起来,形成一张新表,再在新表中查询出满足条件的记录多表查询可分为连接查询和子查询. 一. 连接查询(可分为外连接和内连接)关于外链接的几点说明: A. ...

最新文章

  1. POJ 1414 Life Line(搜索)
  2. SpringMVC+Spring+mybatis
  3. Swift WKWebView读取本地html
  4. 关于vue项目中添加less,less-loader不能运行的问题
  5. linux之history和!命令联合使用
  6. 快速入门系列之 Rust 语言 GitChat连接
  7. linux定时执行python脚本_ubuntu定时执行python脚本实例代码
  8. 常用的限流框架,你都会用吗?
  9. java 网络字节序转主机字节序_C语言高级编程——网络编程技术
  10. 通达OA11.0 补丁文件
  11. 支付宝服务商如何帮助商户快速注册支付宝上级和支付宝小程序以及开通支付宝小程序扫码点餐功能
  12. 什么是网站死链?如何查询网站死链?网站死链怎么解决?
  13. 容迟网络中的路由算法笔记(二)
  14. d3dx9_43.dll如何修复
  15. 北大计算机直博第五年,我选择退学,没有硕士学位...
  16. 计算机安全模式启动时蓝屏,win7安全模式也蓝屏怎么办_win7安全模式蓝屏怎么解决...
  17. javascript-轮播图
  18. UWA DAY 2021 议程亮相
  19. 爆肝一周,用Python在物联网设备上写了个智能语音助手
  20. 这是你的船--读后感

热门文章

  1. c# 读取写入excel单元格基本操作
  2. Windows消息机制详解-2
  3. c# gdi设置画刷透明
  4. SwiftUI3优秀文章List 去掉左右间距问题
  5. 双优先编码器_掌握双原生 ISO,提升动态范围
  6. 怎么查看蓝牙uuid_多设备低功耗蓝牙 Swarm BLE in Android and iOS
  7. android通过php判断用户是否注册,android - 判断Token是否有效
  8. springboot配置连接rds_java – 在AWS-EC2上运行的SpringBoot应用程序无法连接到MySQL AWS-RDS数据库...
  9. 4位加法器的设计代码verilog_一个简单的8位处理器完整设计过程及verilog代码
  10. 怎么解除airpods定位_华强北airpods