李林超博客
首页
归档
留言
友链
动态
关于
归档
留言
友链
动态
关于
首页
其它
正文
MySQL case when使用
Leefs
2020-11-08 PM
2129℃
0条
# MySQL case when使用 ### 一、case的格式 **case具有两种格式:**简单case函数和case搜索函数 > 简单case函数 ```mysql case sex when '1' then '男' when '2' then '女' else '其他' end ``` > case搜索函数 ```mysql case when sex = '1' then '男' when sex = '2' then '女' else '其他' end ``` 这两种方式,可以实现相同的功能。简单case函数的写法相对比较简洁,但是和case搜索函数相比,功能方面会有些限制,比如写判定式。 ### 二、注意事项 case函数只返回第一个符合条件的值,剩下的case部分将自动被忽略。 ```mysql --比如说,下面这段sql,你永远无法得到“第二类”这个结果 case when col_1 in ('a','b') then '第一类' when col_1 in ('a') then '第二类' else '其他' end ``` ### 三、使用 **1. 可以将已知数据按照某种方式进行分组,分析** ![07.MySQL case when使用01.png](https://lilinchao.com/usr/uploads/2020/11/1143117406.png) 根据这个国家人口数据,统计亚洲和北美洲的人口数量。使用如下 SQL: ```mysql SELECT CASE country WHEN '中国' THEN '亚洲' WHEN '印度' THEN '亚洲' WHEN '日本' THEN '亚洲' WHEN '美国' THEN '北美洲' WHEN '加拿大' THEN '北美洲' WHEN '墨西哥' THEN '北美洲' ELSE '其他' END as '洲' , SUM(population) as '人口' FROM test GROUP BY CASE country WHEN '中国' THEN '亚洲' WHEN '印度' THEN '亚洲' WHEN '日本' THEN '亚洲' WHEN '美国' THEN '北美洲' WHEN '加拿大' THEN '北美洲' WHEN '墨西哥' THEN '北美洲' ELSE '其他' END; ``` ![07.MySQL case when使用02.png](https://lilinchao.com/usr/uploads/2020/11/871160476.png) 这里的两个CASE WHEN都相当于一个字段,不过值得一提的是,第二个CASE WHEN 的THEN值并不用写明是什么洲,它只是用于将记录进行分组,所以THEN后面的值只有能区分这三种记录就行,GROUP BY也可以写成: ```mysql GROUP BY CASE country WHEN '中国' THEN 0 WHEN '印度' THEN 0 WHEN '日本' THEN 0 WHEN '美国' THEN 1 WHEN '加拿大' THEN 1 WHEN '墨西哥' THEN 1 ELSE 2 END; ``` **2、用一个SQL语句完成不同条件的分组** ![07.MySQL case when使用03.png](https://lilinchao.com/usr/uploads/2020/11/207841381.png) 用Case函数来完成按照国家和性别进行分组。使用如下SQL: ```mysql SELECT country, SUM( CASE WHEN sex = '1' THEN population ELSE 0 END ), --男性人口 SUM( CASE WHEN sex = '2' THEN population ELSE 0 END ) --女性人口 FROM Table_A GROUP BY country; ``` 得到如下结果: ![07.MySQL case when使用04.png](https://lilinchao.com/usr/uploads/2020/11/3835995844.png) 就第一个CASE WHEN讲解: ``` CASE WHEN sex = '1' THEN population ELSE 0 END ``` 当记录的sex为1时,这个字段的值为记录的population值,否则为0,因此能计算出一个国家的男性人口。 *附:* *参考原文链接:https://www.zhe94.com/593.html*
标签:
MySQL
非特殊说明,本博所有文章均为博主原创。
如若转载,请注明出处:
https://lilinchao.com/archives/930.html
上一篇
Java反射技术简介
下一篇
CentOS 7安装Nginx教程
评论已关闭
栏目分类
随笔
2
Java
326
大数据
229
工具
31
其它
25
GO
47
NLP
4
标签云
数学
排序
DataX
队列
线程池
Linux
人工智能
Zookeeper
Thymeleaf
FastDFS
DataWarehouse
查找
MyBatis
Netty
Elasticsearch
Kafka
高并发
SpringCloud
持有对象
Ubuntu
Nacos
栈
Kibana
Python
Jenkins
国产数据库改造
并发编程
Tomcat
锁
散列
友情链接
申请
范明明
庄严博客
Mx
陶小桃Blog
虫洞
评论已关闭