mysql学习记录,CASE WHEN THEN ELSE END用法
记mysql,case when then else end用法
用法1:搜索函数
SELECT
r.order_no,
r.golds,
r.pay_tool,
CASE WHEN r.pay_tool = 2 THEN IFNULL( (SELECT w.cash_fee FROM ww_weixin_notify w WHERE w.out_trade_no = r.order_no GROUP BY w.out_trade_no) / 100 , 0)
ELSE IFNULL( (SELECT w.receipt_amount FROM ww_alipay_notify w WHERE w.out_trade_no = r.order_no GROUP BY w.out_trade_no), 0)
END AS price,
r.create_time,
r.action
FROM
ww_pay_record r
WHERE
r.user_id = 119
CASE 如果
WHEN 后面跟条件
THEN 操作结果
后面可以跟多个WHEN THEN
ELSE 其余情况
END 结束
用法2:进行自定义排序
SELECT a.id, a.type, a.name, a.golds, a.init_golds
FROM ww_device a
WHERE a.state = 1
AND NOW() < a.tx_time
AND model = ''
ORDER BY a.type DESC, CASE
WHEN a.golds <> a.init_golds THEN 0
ELSE 1
END

先进行type倒序排序,然后将golds不等于init_golds的数据进行排序。
用法3:已知数据按照另外一种方式进行分组、分析
创建以下表数据:

要求:统计亚洲和北美洲的人口数量
SELECT SUM(population) AS population
, CASE country
WHEN '中国' THEN '亚洲'
WHEN '印度' THEN '亚洲'
WHEN '日本' THEN '亚洲'
WHEN '美国' THEN '北美洲'
WHEN '加拿大' THEN '北美洲'
WHEN '墨西哥' THEN '北美洲'
ELSE '其他'
END AS continent
FROM table_a
GROUP BY continent
得到如下结果:

用法4:用一个SQL语句完成不同条件的分组
创建以下表数据:

要求:按照国家和性别进行分组
SELECT country as '国家', SUM(CASE
WHEN sex = 1 THEN population
ELSE 0
END) AS '男', SUM(CASE
WHEN sex = 2 THEN population
ELSE 0
END) AS '女'
FROM table_b
GROUP BY country;
得到如下结果:

用法5:根据条件有选择的UPDATE
有如下条件:
1、工资5000以上的职员,工资减少10%
2、工资在2000到4600之间的职员,工资增加15%
如果执行两次UPDATE语句,如下所示:
#语句1(满足条件1)
UPDATE Personnel
SET salary = salary * 0.9
WHERE salary >= 5000;
#语句2(满足条件2)
UPDATE Personnel
SET salary = salary * 1.15
WHERE salary >= 2000 AND salary < 4600;
假设一人工资为5000元,那么执行语句1,工资变为4500元,接下来运行第二个SQL语句时,因为这个人在执行完第一个SQL语句后工资在2000到4600之间,工资会增加15%,工资变为5175元,最终这个人的工资没有减少,反而增加了;如果我们希望通过一个SQL语句实现这个业务的话,就要使用到case函数
UPDATE Personnel
SET salary = CASE
WHEN salary >= 5000 THEN salary * 0.9
WHEN salary >= 2000
AND salary < 4600 THEN salary * 1.15
ELSE salary
END;
以上用法3、4、5参考:https://www.cnblogs.com/prefect/p/5746624.html
mysql学习记录,CASE WHEN THEN ELSE END用法的更多相关文章
- (一)《SQL进阶教程》学习记录--CASE
背景:最近用到统计之类的复杂Sql比较多,有种"提笔忘字"的感觉,看书练习,举一反三,巩固加强. (一) <SQL进阶教程>学习记录--CASE (二) <SQL ...
- ElasticSearch 学习记录之ES短语匹配基本用法
短语匹配 短语匹配故名思意就是对分词后的短语就是匹配,而不是仅仅对单独的单词进行匹配 下面就是根据下面的脚本例子来看整个短语匹配的有哪些作用和优点 GET /my_index/my_type/_sea ...
- 我的MySQL学习记录 完结篇DAY05~
课程已全部学完,Redis\mongoDB 的学习也会提上日程啦~剩下的最大的最大的问题在于练习,大量的练习,后期会发我的学习记录. 小记:也不知道是不是加强针的缘故,老是拉肚子,记录彻底感冒的一天, ...
- Mysql 学习记录
( xampp 的mysql 与 直接用 dnf 安装的 mysql 有冲突! ) 1. 数据库基本知识: 一张表的行 又称为 记录 一张表的列 又称为 字段 表结构:所有字段,规定了你的每一条记录所 ...
- mysql学习记录
干净卸载mysql:https://blog.csdn.net/cxy_summer/article/details/70142322mysql 解压缩版安装说明:https://jingyan.ba ...
- MySQL学习记录一
1.MySQL join操作 left join以左表为基础,其记录会全部表示出来,而右表只显示满足搜索条件的记录.right join以右表为基础,其记录会全部显示出来,而左表只显示满足搜索条件的记 ...
- MySQL学习记录(导入Excel表到数据库,并筛选条件输出)
附上:重置mysql账号密码方法 ubuntu系统下mysql重置密码和修改密码操作 - skh2015java的博客 - CSDN博客(改完重启,登录mysql要root/sudo权限) Cento ...
- mysql学习记录(一)
#打开MySQL服务 sudo service mysql start #Ubuntu Linux 安装配置MySQL #安装MySQL服务器,核心程序 sudo apt-get install my ...
- MySQL学习记录--操作时间数据
1.返回日期的时间函数 date_add() : 可以为指定日期增加/减少任意一段时间间隔.下面举例将当前日期增加一个月和减少一个月 mysql month) as add_one_month; +- ...
随机推荐
- 实现绘制图形的ToolBar
给地图添加绘制图形的ToolBar还是有必要的,比较人性化的功能.图形的样式可以自己定制,也提供了朴实的默认样式.对 dojo 不太懂,出现了许许多多问题,真是蛋疼的一天啊.令人惊喜的是 ArcGis ...
- C#启动外部程序(进程)
通过调用Process类可以启动系统内部(环境变量里的)或者指定位置的程序,例如: Process.Start("notepad");//启动记事本 Process.Start(& ...
- html tags and attribute集参考
cite 表示引用到某一本书籍名称,默认样式为斜体,q 表示直接引用到里面的话,大块的引用使用block默认样式将增加“双引号” ,关键的词用<b>默认为粗体:一些技术术语则用<i& ...
- Linux ->> Chmod命令改变文件/文件夹属性
简介 chmod命令用于改变linux系统文件或目录的访问权限,控制用户/用户组对文件或目录的访问权限. 用法: 两种用法:1)用字母r(读).w(写).x(执行)表示权限类型:2)用数字表示,4代表 ...
- Stack vs Heap
http://gribblelab.org/CBootcamp/7_Memory_Stack_vs_Heap.html Table of Contents Stack vs Heap The Stac ...
- keepalived+MySQL双主搭建
keepalived+MySQL双主搭建过程 首先要简单了解一下keepalived: Keepalived是Linux下一个轻量级别的高可用解决方案.高可用(High Avalilability,H ...
- Struts2学习-json
Struts2 实现JSON输出有2种办法1.把Action变成Servlet,使用传统做法2.使用Struts 内置功能完成 二. 1.导入配置,pom.xml,要去struts2的官网下载mvnr ...
- 【设计模式最终总结】桥接模式 VS 外观模式
差异点 外观模式,是把功能通过一个接口提供出来,方便日后更换实现,或者这种实现可以由多方提供,但同时只用一个.典型例子:@Slf4j 桥接模式,多个维度,每个维度提供一个接口,这些接口集中在一个类中, ...
- Future Research Directions in Social Recommendation
From the tutorial published by Martin Ester in RecSys 2013 Future Research Directions --Recommendati ...
- Angular4.0--创建类实例
src/app/hero.ts文件: export class Hero { constructor( public id: number, public name: string) { } } sr ...